Go pemalar bahasa


Pemalar ialah pengecam nilai mudah yang tidak akan diubah suai semasa program sedang berjalan.

Jenis data dalam pemalar hanya boleh boolean, angka (integer, titik terapung dan nombor kompleks) dan rentetan.

Format definisi malar:

const identifier [type] = value

Anda boleh meninggalkan penentu jenis [jenis] kerana pengkompil boleh membuat kesimpulan jenis pembolehubah berdasarkan nilainya.

  • Takrif jenis eksplisit: const b string = "abc"

  • Takrif jenis tersirat: const b = "abc"

Berbilang pengisytiharan jenis yang sama boleh disingkatkan sebagai:

const c_name1, c_name2 = value1, value2

Contoh berikut menunjukkan penggunaan pemalar:

package main

import "fmt"

func main() {
   const LENGTH int = 10
   const WIDTH int = 5   
   var area int
   const a, b, c = 1, false, "str" //多重赋值

   area = LENGTH * WIDTH
   fmt.Printf("面积为 : %d", area)
   println()
   println(a, b, c)   
}

Hasil contoh di atas ialah:

面积为 : 50
1 false str

Pemalar juga boleh digunakan sebagai penghitungan:

const (
    Unknown = 0
    Female = 1
    Male = 2
)

Nombor 0, 1, dan 2 masing-masing mewakili jantina, perempuan dan lelaki yang tidak diketahui.

Pemalar boleh digunakan untuk mengira nilai ungkapan menggunakan pemalar len(), cap(), tidak selamat.Sizeof(). Dalam ungkapan malar, fungsi mestilah fungsi terbina dalam, jika tidak, ia tidak akan menyusun:

package main

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

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

Hasil daripada contoh di atas ialah:

abc 3 16

iota

iota, pemalar khas, Boleh dianggap sebagai pemalar yang boleh diubah suai oleh pengkompil.

Apabila setiap kata kunci const muncul, ia ditetapkan semula kepada 0, dan kemudian sebelum const seterusnya muncul, setiap kali iota muncul, nombor yang diwakilinya akan meningkat secara automatik sebanyak 1.


iota boleh digunakan sebagai nilai penghitungan:

const (
    a = iota
    b = iota
    c = iota
)

Iota pertama bersamaan dengan 0. Apabila iota digunakan dalam baris baharu, nilainya akan Tambah secara automatik 1; jadi a=0, b=1, c=2 boleh dipendekkan seperti berikut:

const (
    a = iota
    b
    c
)

Penggunaan iota

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

Hasil contoh di atas ialah:

0 1 2 ha ha 100 100 7 8

Mari kita lihat contoh iota yang menarik:

package main

import "fmt"
const (
	i=1<<iota
    j=3<<iota
    k
    l
)

func main() {
	fmt.Println("i=",i)
	fmt.Println("j=",j)
	fmt.Println("k=",k)
	fmt.Println("l=",l)
}

Hasil daripada contoh di atas ialah:

i= 1
j= 6
k= 12
l= 24

iota bermakna ia secara automatik meningkat sebanyak 1 bermula daripada 0, jadi i=1<< 0,j= 3<<1 (<< bermaksud anjakan kiri), iaitu: i=1, j=6 Ini bukan masalah 3<<2, l=3<<3.