【GO學習二】包,函數,常量和變數

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

主要介紹go語言的基本元素,包引入,變數,函式宣告

引入包:

go語言通過import引入包
最佳實務:import順序:系統package,第三方package,程式自己的package

package mainimport (   "fmt"   "math")func main() {   fmt.Printf("math test number %g ",math.Sqrt(7))}# 運行輸出cuixiaozhuai:main cuixiaohuan$ ./hellomath test number 2.6457513110645907

函數定義

go中函數可以沒有參數或者接受多個參數

基本格式

func xx(AA type,aa) Type {}
package mainimport (   "fmt")func funcNoParams() string {   return "Hello no params func"}func add(x int, y int) int {   return x + y}func main() {   fmt.Println(funcNoParams())   fmt.Println(add(3, 3))}cuixiaozhuai:main cuixiaohuan$ ./helloHello no params func6

func 可以多值返回

func swap(a, b string) (string, string) {   return b, a}func main() {   a, b := swap("cuihuan_first", "cuihuan_second");   fmt.Println(a, b)}cuixiaozhuai:main cuixiaohuan$ ./hellocuihuan_second cuihuan_first

變數操作

go 中通過var 定義變數,參數在前,類型在後

var boolVal, boolVal2 boolfunc main() {   var intVal int   var stringVal string   fmt.Println(boolVal, boolVal2, intVal, stringVal)}cuixiaozhuai:main cuixiaohuan$ ./hellofalse false 0

變數預設值

沒有賦值的時候會給上預設值。

var boolVal, boolVal2 bool = true, falsefunc main() {   // 宣告類型   var intVal int = 33   var stringVal string = "xiaozhuai string"   fmt.Println(boolVal, boolVal2, intVal, stringVal)   // 不宣告類型   var undefineType1,undefineType2,undefineType3 = "yo yo yo","qiekenao",666   fmt.Println(undefineType1, undefineType2, undefineType3)}cuixiaozhuai:main cuixiaohuan$ ./hellotrue false 33 xiaozhuai stringyo yo yo qiekenao 666

:= 賦值

函數中的賦值可以用 :=代替var 【:= 標示聲明又賦值,但是只能用於函數內】

var boolVal, boolVal2 bool = true, falsefunc main() {   // 宣告類型   var intVal int = 33   var stringVal string = "xiaozhuai string"   fmt.Println(boolVal, boolVal2, intVal, stringVal)   // 不宣告類型 := 聲明賦值   undefineType1,undefineType2,undefineType3 := "yo yo yo","qiekenao",666   fmt.Println(undefineType1, undefineType2, undefineType3)}

注意:= 簡介賦值,但是無法,聲明,賦值,定義類型。和var的區別
函數外,必須用var func等等

變數基本類型

func main() {   // go 變數全部類型和預設值   var boolVal bool   fmt.Println("bool default:",boolVal)   var stringVal string   fmt.Println("string default:",stringVal)   // int 在32位上預設32 64位預設64,uint 和 uintptr類似   var intVal int   var int8Val int8   var int16Val int16   var int32Val int32   var int64Val int64   fmt.Println("int default:",intVal)   fmt.Println("int8 default:",int8Val)   fmt.Println("int16 default:",int16Val)   fmt.Println("int32 default:",int32Val)   fmt.Println("int64 default:",int64Val)   fmt.Println("max int 64:", uint64(1<<64-1))   var uintVal uint   var uint8Val uint8   var uint16Val uint16   var uint32Val uint32   var uint64Val uint64   var uintptrVal uintptr   fmt.Println("uint default:",uintVal)   fmt.Println("uint8 default:",uint8Val)   fmt.Println("uint16 default:",uint16Val)   fmt.Println("uint32 default:",uint32Val)   fmt.Println("uint64 default:",uint64Val)   fmt.Println("uintptr default:",uintptrVal)   // uint8 別名   var byteVal byte   fmt.Println("byte default:",byteVal)   // int 32 別名,代表一個unicode   var runeVal rune   fmt.Println("rune default:",runeVal)   // int 32 別名,代表一個unicode   var floatVal float32   fmt.Println("floatVal default:",floatVal)   // int 32 別名,代表一個unicode   var complexVal complex64   fmt.Println("complex64Val default:",complexVal)}cuixiaozhuai:main cuixiaohuan$ ./hellobool default: falsestring default:int default: 0int8 default: 0int16 default: 0int32 default: 0int64 default: 0max int 64: 18446744073709551615uint default: 0uint8 default: 0uint16 default: 0uint32 default: 0uint64 default: 0uintptr default: 0byte default: 0rune default: 0floatVal default: 0complex64Val default: (0+0i)

int 類型的零值 是0 bool 預設false 字串為”" Null 字元串

18446744073709551615 byte 到底多大 【2097152TB】
int 64 可以表示200wTB的資料,那麼問題來了,PB的資料如何表示,float
這裡也可以通俗的理解下:資料庫中的int(11)類型作為主鍵,基本不用擔心滿,200wTB*8 的資料量,足以

變數類型推導:

func main() {   v := 666   f := 666.666   s := "string 666"   i := v   fmt.Printf("666 is of type %T\n", v)   fmt.Printf("666.666 is of type %T\n", f)   fmt.Printf("'string666' is of type %T\n", s)   fmt.Printf("傳遞 is of type %T\n", i)}# 需要注意的是,go中屬於強型別,一旦定義之後就不允許改變為其他類型。cuixiaozhuai:main cuixiaohuan$ ./hello666 is of type int666.666 is of type float64'string666' is of type string傳遞 is of type int

另外變數的官方參考文檔:
https://golang.org/ref/spec#C...

常量:const

go中常量不能用:=
go中常量可以是字元,字串,布爾和數字類型的值

const PI = 3.14func main() {   const test = "test const";   fmt.Println(test, PI);}cuixiaozhuai:main cuixiaohuan$ ./hellotest const 3.14

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.