02-Go語言語法基礎(一)

1. 定義變量

1.2 使用var關鍵字

  • var a, b, c bool
  • var s1, s2 string = “hello”,“world”
  • 可以直接放在函數內或者直接放在包內
  • 可以使用var()集中定義變量

1.3 讓編譯器自動決定類型

  • var a, b, i, s1, s2 =true, false, 3, “hello”, “world”

1.4 使用:=定義變量

  • a, b, i, s1, s2 :=true, false, 3, “hello”, “world”
  • 只能在函數內使用

1.5 Demo

var (
	aa = 3
	ss = "kkk"
	bb = true
)

func variableZeroValue() {
	var a int
	var s string
	fmt.Printf("%d %q\n", a, s)
}

func variableInitialValue() {
	var a, b int = 3, 4
	var s string = "abc"
	fmt.Println(a, b, s)
}

func variableTypeDeduction() {
	var a, b, c, s = 3, 4, true, "def"
	fmt.Println(a, b, c, s)
}

func variableShorter() {
	a, b, c, s := 3, 4, true, "def"
	b = 5
	fmt.Println(a, b, c, s)
}

2. 內建變量類型

  • bool, string
  • (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
  • byte, rune
  • float32, float64, complex64, complex128

Go語言與其它語言重複的內建變量不做贅述。需要注意的是(u)就是unsigned代編有符合或無符號,go語言中讓人陌生的主要是

  • uintptr,Go語言的指針類型
  • rune,Go語言沒有char類型,其實 rune就是Go語言的char類型,而且是char32位
  • complex 複數類型

複數,最美歐拉公式demo

func euler() {
	c := 3 + 4i
	fmt.Println(cmplx.Abs(c))
	//驗證歐拉公式
	fmt.Printf("%.3f\n",
		cmplx.Exp(1i*math.Pi)+1)
}

3. Go語言的類型轉換

很多語言都可以隱式的進行類型轉換,比如C語言,可以默認的從低精度到高精度轉,浮點數除整數後,結果默認爲浮點數,但是Go語言沒有隱式強制類型轉換,必須顯示轉換。

func triangle() {
	var a, b int = 3, 4
	fmt.Println(calcTriangle(a, b))
}

func calcTriangle(a, b int) int {
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	return c
}

4. 常量與枚舉

與其它語言類似,Go語言的常量也是使用const關鍵字。

func consts() {
	const (
		filename = "abc.txt"
		a, b     = 3, 4
	)
	var c int
	c = int(math.Sqrt(a*a + b*b))
	fmt.Println(filename, c)
}

利用常量類型可以定義枚舉類型

func enums() {
	const (
		cpp = iota
		_
		python
		golang
		javascript
	)

	const (
		b = 1 << (10 * iota)
		kb
		mb
		gb
		tb
		pb
	)

	fmt.Println(cpp, javascript, python, golang)
	fmt.Println(b, kb, mb, gb, tb, pb)
}

其中:

  • iota是go語言的常量計數器,只能在常量的表達式中使用。
  • iota在const關鍵字出現時將被重置爲0(const內部的第一行之前),const中每新增一行常量聲明將使iota計數一次(iota可理解爲const語句塊中的行索引)。
  • 使用iota能簡化定義,在定義枚舉時很有用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章