Latest web development tutorials

Pergi variabel linguistik

Variabel dari matematika, bahasa komputer dapat disimpan atau hasil dihitung dapat mewakili nilai abstraksi. Variabel dapat diakses melalui nama variabel.

nama variabel bahasa pergi terdiri dari huruf, angka, garis bawah, yang huruf pertama tidak numerik.

Bentuk umum dari sebuah variabel dideklarasikan menggunakan kata kunci var:

var identifier type

deklarasi variabel

Pertama, tentukan jenis variabel, deklarasi jika tugas, menggunakan default.

var v_name v_type
v_name = value

Kedua, berdasarkan nilai penentuan nasib sendiri jenis variabel.

var v_name = value

Ketiga, menghilangkan var, catatan: Variabel = Kiri tidak harus dinyatakan di tempat, jika tidak maka akan menyebabkan kesalahan kompilator.

v_name := value

// 例如
var a int = 10
var b = 10
c : = 10

Contohnya adalah sebagai berikut:

package main
var a = "w3cschool本教程"
var b string = "w3cschool.cc"
var c bool

func main(){
    println(a, b, c)
}

Di atas contoh Pelaksanaan hasil:

w3cschool本教程 w3cschool.cc false

deklarasi multivariabel

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

Contohnya adalah sebagai berikut:

package main

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

Di atas contoh Pelaksanaan hasil:

0 0 0 false 1 2 123 hello 123 hello

jenis nilai dan jenis referensi

Semua seperti int, float, bool dan tali ini tipe dasar semua jenis nilai, menggunakan jenis variabel langsung ke nilai yang tersimpan dalam memori:

Bila Anda menggunakan tanda sama = ketika nilai variabel ditugaskan ke variabel lain, seperti: j = i , sebenarnya nilai memori saya akan salinan:

Anda bisa mendapatkan alamat memori dari variabel i & i, misalnya: 0xf840000040 (setiap alamat mungkin berbeda). Nilai disimpan variabel jenis nilai pada stack.

alamat memori akan bervariasi tergantung pada mesin, atau bahkan program yang sama pada mesin yang berbeda setelah eksekusi akan memiliki alamat memori yang berbeda. Karena setiap mesin dapat memiliki tata letak memori yang berbeda, dan tugas posisi mungkin berbeda.

data yang lebih kompleks sering memerlukan penggunaan beberapa kata-kata, data ini biasanya disimpan menggunakan tipe referensi.

Sebuah variabel tipe referensi r1 r1 adalah nilai yang disimpan di alamat memori di mana (digital), atau posisi alamat memori dari kata pertama berada.

Alamat memori disebut pointer yang sebenarnya ada satu kata yang lain.

Dengan mengacu pada sejumlah jenis kata pointer mungkin dalam alamat memori yang berdekatan (tata letak memori kontinu), yang merupakan perhitungan dari bentuk yang paling efisien penyimpanan, ini juga dapat disimpan dalam kata-kata memori tersebar, masing-masing kata menunjukkan di mana alamat memori kata berikutnya.

Ketika r2 pernyataan penugasan = r1, hanya referensi (alamat) disalin.

Jika nilai r1 berubah, maka nilai semua kutipan akan dimodifikasi untuk titik, dalam hal ini, r2 juga akan terpengaruh.


bentuk pendek, gunakan: = operator penugasan

Kami tahu bahwa Anda secara otomatis dapat menyimpulkan jenis variabel diawali dengan variabel sistem dihilangkan, keterangan tertulis pada kata kunci deklarasi var sebenarnya agak berlebihan, sehingga kita dapat disingkat mereka sebagai: = 50 atau b: = false.

dan jenis b (int dan bool) akan secara otomatis disimpulkan compiler.

Ini adalah bentuk yang diinginkan dari penggunaan variabel, tetapi hanya dapat digunakan dalam tubuh fungsi, hal itu tidak dapat digunakan untuk menyatakan dengan tugas untuk variabel global. Menggunakan operator: = efisien dapat membuat variabel baru yang disebut pernyataan inisialisasi.

kewaspadaan

Jika blok kode yang sama, kita tidak dapat kembali menggunakan nama yang sama untuk pernyataan inisialisasi variabel, misalnya: a: = 20 tidak diperbolehkan, compiler akan menampilkan kesalahan ada variabel baru pada sisi kiri: =, tetapi = 20 adalah mungkin, karena itu adalah untuk variabel yang sama diberikan sebuah nilai baru.

Jika Anda menggunakannya sebelum Anda menentukan variabel, Anda akan mendapatkan error kompilasi terdefinisi: a.

Jika Anda mendeklarasikan variabel lokal, namun tidak digunakan di blok yang sama dari kode di dalamnya, Anda akan mendapatkan error kompilasi, seperti contoh berikut yang variabel:

func main() {
   var a string = "abc"
   fmt.Println("hello, world")
}

Mencoba untuk mengkompilasi kode ini akan mendapatkan erroryang dinyatakan dan tidak digunakan.

Selain itu, untuk memberikan tugas sederhana tidak cukup, nilai ini harus digunakan, sehingga penggunaannya

fmt.Println("hello, world", a)

Ini akan menghapus kesalahan.

Tapi variabel global dideklarasikan tetapi tidak diizinkan untuk menggunakan.

>

Beberapa variabel dari jenis yang sama dapat dideklarasikan pada baris yang sama, seperti:

var a, b, c int

variabel lebih dapat diberikan pada baris yang sama, seperti:

a, b, c = 5, 7, "abc"

Baris di atas mengasumsikan bahwa variabel a, b dan c telah dinyatakan, jika tidak maka harus digunakan cara ini:

a, b, c := 5, 7, "abc"

Nilai-nilai ini berada di sebelah kanan dalam urutan yang sama ditugaskan ke variabel di sebelah kiri, sehingga nilai yang 5, b nilai adalah 7, nilai c adalah "abc".

Tugas ini disebut paralel atau bersamaan.

Jika Anda ingin menukar nilai dari dua variabel, Anda hanya dapat menggunakan a, b = b, a.

identifier kosong _ juga digunakan nilai dibuang, seperti nilai 5: _, b = 5, 7 ditinggalkan.

_ Sebenarnya variabel write-only, Anda tidak bisa mendapatkan nilai. Pergi melakukan ini karena bahasa yang Anda harus menggunakan semua variabel dideklarasikan, tapi kadang-kadang Anda tidak perlu menggunakan semua kembali nilai-nilai dari fungsi yang diperoleh.

tugas paralel juga digunakan sebagai fungsi mengembalikan beberapa nilai kembali, seperti val dan err kesalahan di sini secara bersamaan diperoleh dengan memanggil fungsi func1: val, err = func1 (var1).