Go 語言入門

Go 語言入門

Go 語言簡(jiǎn)介

  • Go 使一個(gè)開源的編程語言。
  • 從2007年末 有Robert Griesemer,Rob Pike , Ken Thompson 主持開發(fā)。
  • 最終2009年11月開源。
  • 2012年早些時(shí)候發(fā)布了Go1 穩(wěn)定版本
  • 目前Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個(gè)活躍的社區(qū)。

Go 語言特色

  • 簡(jiǎn)單、快速、安全
  • 并行、有趣、開源
  • 內(nèi)存管理、v數(shù)組安全、編譯迅速

第一個(gè)Go程序《Hello world》

// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

這個(gè)代碼,是有LiteIDE 自動(dòng)生成的。
運(yùn)行結(jié)果如下:

// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

根據(jù)Go Hello World 實(shí)力,分析一下GO語言結(jié)構(gòu)

Go語言的基礎(chǔ)組成有以下幾個(gè)部分:

  • 包聲明
  • 引入包
  • 函數(shù)
  • 變量
  • 語句 & 表達(dá)式
  • 注釋
    接下來讓我們來看下簡(jiǎn)單的代碼,該代碼輸出了"Hello World!"
// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

詳細(xì)分析一下:
1、第一行代碼 package main 定了包名, 必須在源文件中非注釋的第一行指明這個(gè)文件屬于哪個(gè)包,比如:package main 表示一個(gè)可獨(dú)立執(zhí)行的程序,每一個(gè)Go應(yīng)用程序,都包含一個(gè) main 的包。
2、下一行的 import "fmt" 高速Go編輯器這個(gè)程序要用到fmt 包,fmt包實(shí)現(xiàn)了格式化IO的函數(shù)。
3、下一行 func main() 是程序開始執(zhí)行的函數(shù),main函數(shù)是每一個(gè)可執(zhí)行程序必須包含的,一般來說,都是在啟動(dòng)第一個(gè)執(zhí)行的函數(shù)(如果有init()函數(shù),會(huì)更先執(zhí)行)。
4、fmt.Println(...) 輸出字符串到控制臺(tái),并在最后自動(dòng)增加換行符\n
5、注解 /*.... */。不解釋。

使用命令窗,執(zhí)行Go程序

剛剛的文件保存為 test.go
然后打開命令窗口,運(yùn)行 go run test.go 回車即可。

Go語言基礎(chǔ)語法

** Go 標(biāo)記 **
Go程序可以有多個(gè)標(biāo)記組成,可以使關(guān)鍵字、標(biāo)識(shí)符、常量、字符串、符號(hào)。如下Go語句的6個(gè)標(biāo)記組成。

fmt.Println("Hello,World!")

6個(gè)標(biāo)記是:

1、fmt
2、.
3、Println
4、(
5、"Hello,World!"
6、)
行分隔符

在Go 程序中,一行代表一個(gè)語句結(jié)束,每個(gè)語句不需要像C家族中的其他語言一樣以分毫;結(jié)尾,因?yàn)檫@些工作都由Go編譯器自動(dòng)完成。
如果你打算多個(gè)語句寫在同一行,他們則必須使用;人為區(qū)分,但在實(shí)際開發(fā)中,我們并不鼓勵(lì)這樣的做法。

注釋

注釋不會(huì)被編譯。

// 我是單行注釋
/*
 我是多行注釋
*/
標(biāo)識(shí)符

標(biāo)識(shí)符用來命名變量、類型等程序?qū)嶓w。一個(gè)標(biāo)識(shí)符實(shí)際上就是一個(gè)或是多個(gè)字母(AZ和az)數(shù)字(0~9)、下劃線_組成的序列,但是第一個(gè)字符必須是字母或下劃線而不能是數(shù)字。

以下是無效的標(biāo)識(shí)符:

  • 1ab(以數(shù)字開頭)
  • case(Go 語言的關(guān)鍵字)
  • a+b(運(yùn)算符是不允許的)
Go 語言數(shù)據(jù)類型
序號(hào) 類型 描述
1 布爾型 布爾型的值只可以是常量true或則false.例如:var b = true var b bool = true
2 數(shù)字類型 整形int和浮點(diǎn)型float , Go語言支持整型和浮點(diǎn)數(shù)字,并且原生支持復(fù)數(shù),其中位的運(yùn)輸采用補(bǔ)碼
3 字符串類型 字符串就是一串固定長(zhǎng)度的字符鏈接起來的字符序列。Go的字符串是由單個(gè)字節(jié)鏈接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼表示Unicode文本。
派生類
序號(hào) 類型
4 指針型(Pointer)
5 數(shù)組類型
6 結(jié)構(gòu)化類型(struct)
7 Channel類型
8 函數(shù)類型
9 切片類型
10 接口類型(interface)
11 Map類型
數(shù)字類型

Go也有基于架構(gòu)的類型,例如:int、uint和uintptr

序號(hào) 類型 描述
1 uint8 無符號(hào)8位整型(0~255)
2 uint16 無符號(hào)16位整形(0~65535)
3 uint32 無符號(hào) 32 位整型 (0~4294967295)
4 uint64 無符號(hào) 64 位整型 (0~18446744073709551615)
5 int8 有符號(hào) 8 位整型 (-128~127)
6 int16 有符號(hào) 16 位整型 (-32768~32767)
7 int32 有符號(hào) 32 位整型 (-2147483648~2147483647)
8 int64 有符號(hào) 64 位整型 (-9223372036854775808~9223372036854775807)
浮點(diǎn)型
序號(hào) 類型 描述
1 float32 IEEE-754 32位浮點(diǎn)型數(shù)
2 float64 IEEE-754 64位浮點(diǎn)型數(shù)
3 complex64 32 位實(shí)數(shù)和虛數(shù)
4 complex128 64 位實(shí)數(shù)和虛數(shù)
其他數(shù)字類型
序號(hào) 類型 描述
1 byte 類似uint8
2 rune 類似int32
3 uint 32或64位
4 int 與uint一樣大小
5 uintptr 無符號(hào)整形,用于存放一個(gè)指針
go語言變量

變量來源于數(shù)學(xué),是計(jì)算機(jī)語言中能存儲(chǔ)計(jì)算結(jié)果或能表示值抽象概念,變量可以通過變量名訪問。
Go語言變量名由字母、數(shù)字、下劃線組成,其中首歌字幕不能為數(shù)字。
聲明變量的一般形式是使用var關(guān)鍵字:

var identifier type
變量聲明

第一種,指定變量類型,聲明后若不賦值,使用默認(rèn)值。

var v_name v_type
v_name = value

第二種,根據(jù)值自行判斷變量類型

var v_name = value

第三種,省略var,注意 := 左側(cè)的變量不應(yīng)該是已經(jīng)經(jīng)過聲明的,否則或?qū)е戮幾g錯(cuò)誤。

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

實(shí)例如下:

package main
var a = "測(cè)試字符串"
var b string = "aweiblog.top"
var c bool //默認(rèn)false

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

多變量聲明
//類型相同多個(gè)變量,非全局變量
var vname1,vname2 , vname3  type

vname1, vname2 , vname3 = v1,v2,v3

var vname1, vname2,vname3 = v1, v2, v3 //和python很想,不需要顯示聲明類型,自動(dòng)推斷

vname1, vname2,vname3 := v1,v2,v3 //出現(xiàn)在:=左側(cè)的變量不應(yīng)該是已經(jīng)被聲明的,否則會(huì)導(dǎo)致編譯錯(cuò)誤。

//這種因式分解關(guān)鍵字的寫法一般用語聲明全局變量,注意這里是 () , 而不是 {}
var (
    vname1 v_type1
    vname2 v_type2
)

實(shí)實(shí)例如下:

package main

var x,y int
var(
    a int
    b bool
)

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


//這種不帶聲明格式的職能在函數(shù)體中出現(xiàn)
//g,h := 123, "hello"

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Go入門 Go介紹 部落圖鑒之Go:爹好還這么努力? 環(huán)境配置 安裝 下載源碼編譯安裝 下載相應(yīng)平臺(tái)的安裝包安裝 ...
    齊天大圣李圣杰閱讀 4,764評(píng)論 0 26
  • 首先介紹下GO語言的起源 Go語言是一個(gè)開源的編程語言,它能讓構(gòu)造簡(jiǎn)單,可靠且高效的軟件變得容易。GO是從2007...
    DX初學(xué)者閱讀 871評(píng)論 0 1
  • 文件名、關(guān)鍵字與標(biāo)識(shí)符 25 個(gè)關(guān)鍵字或保留字 36 個(gè)預(yù)定義標(biāo)識(shí)符 Go 編譯 每個(gè) Go 應(yīng)用程序都包含一個(gè)名...
    冰雪八哥閱讀 334評(píng)論 0 0
  • 原文鏈接 http://ironxu.com/581 本文是 How to Write Go Code 的學(xué)習(xí)筆記...
    好剛編程閱讀 1,330評(píng)論 0 7
  • 僅為方便查看,搬運(yùn)一下,也可看原文 1. 簡(jiǎn)介 本文是關(guān)于Go編程語言的基礎(chǔ)教程,主要面向有C/C++基礎(chǔ)的讀者。...
    老魏閱讀 561評(píng)論 0 2

友情鏈接更多精彩內(nèi)容