欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言變量與基礎(chǔ)數(shù)據(jù)類型詳情

 更新時(shí)間:2021年09月29日 16:32:13   作者:Mr-Yang`  
Go 是靜態(tài)(編譯型)語言,是區(qū)別于解釋型語言的弱類型語言(靜態(tài):類型固定,強(qiáng)類型:不同類型不允許直接運(yùn)算),下面文章將對(duì)其進(jìn)行詳細(xì)介紹,需要的朋友可以參考一下

一、基礎(chǔ)介紹

Go 是靜態(tài)(編譯型)語言,是區(qū)別于解釋型語言的弱類型語言(靜態(tài):類型固定,強(qiáng)類型:不同類型不允許直接運(yùn)算)

例如 python 就是動(dòng)態(tài)強(qiáng)類型語言

1、Go 的特性

跨平臺(tái)的編譯型語言,交叉編譯

管道(channel),切片(slice),并發(fā)(routine

有垃圾回收機(jī)制

支持面向?qū)ο蠛兔嫦蜻^程的編程模式(Go 的面向?qū)ο鬀]有類的概念)

2、Go 的常用命令

go env   // go的環(huán)境變量
    -GO111MODULE=     // 空的,現(xiàn)在沒有使用MODULE模式
    -GOPATH=C:\Users\oldboy\go  // 代碼存放路徑
    -GOROOT=c:\go     // go sdk安裝路徑
go build   // 編譯型語言,需要先編譯再執(zhí)行,編譯成可執(zhí)行文件,執(zhí)行可執(zhí)行文件
go run   // 編譯并執(zhí)行,開發(fā)階段用,兩步并作一步

go get   // 下載并安裝包和依賴等同于pip install
go version
go fmt   // 運(yùn)行g(shù)ofmt進(jìn)行格式化(go fmt :自動(dòng)將代碼格式)

3、Hello Word

// 單行注釋

/*
多行注釋
多行注釋
 */


// Go(所有編譯型語言)項(xiàng)目要運(yùn)行,必須有一個(gè)入口
// Go 的入口是 main 包下的 main 函數(shù)

// main 包下可不可以有多個(gè) main 函數(shù)

package main    // 聲明包名,包名是 main,每一個(gè) Go 文件都屬于某個(gè)包

import "fmt"    // 導(dǎo)入包,內(nèi)置包

func main() {   // 定義了一個(gè)main函數(shù),大括號(hào)包裹是函數(shù)體的內(nèi)容
 fmt.Println("Hello World")  // 打印函數(shù)等同與print()
}

 

// 編譯
go build s1.go
// 執(zhí)行
s1.exe

// 編譯并執(zhí)行
go run s1.go
// 在goland中,右鍵,運(yùn)行即可

二、變量

go 語言的變量定義方式主要分為三種方式,并且不能重復(fù)定義。

1、定義方式

方式一:全定義

// var 變量名 變量類型 = 變量值

package main 

import "fmt"

func main() {
 var age int = 10 // 在go中,變量定義了就必須使用,如果不使用就報(bào)錯(cuò)
 fmt.Println(age)
}

方式二:類型推導(dǎo)(類型就不需要寫了)

package main

import "fmt"

func main() {
   var age = 20
   var name = "XiaoYang"
    
   fmt.Println(age, name)
   fmt.Printf("%T\n",name)     // 查看變量類型 \n表示換行
   fmt.Printf("%p",&name)   // 查看變量?jī)?nèi)存地址
}

// 輸出
20 XiaoYang
string
0xc000056230

方式三:簡(jiǎn)略聲明(類型和 var 關(guān)鍵字都不寫)

package main

import "fmt"

func main() {
   age := 20
   var age int = 30   // 重復(fù)定義會(huì)報(bào)錯(cuò),不能重復(fù)定義
    
   fmt.Println(age)
}

其他定義方式:其他定義方式都是在前三種方式的基礎(chǔ)上做出變形而出現(xiàn)的:

只定義不賦值:

var age int // 定義變量,如果只定義不賦值,只能用這種方式

var age  // 錯(cuò)誤,無法判斷類型

聲明多個(gè)變量:

var width, height int = 100, 50  // 聲明多個(gè)變量
var width, height = 100, 50   // 聲明多個(gè)變量
var width, height = 100, "XiaoYang" // 聲明多個(gè)變量
width, height := 100, "XiaoYang" // 聲明多個(gè)變量

聲明多個(gè)變量,并賦初始值:

var (
   name = "XiaoYang"
   age int = 20
   height int
)
fmt.Println(name, age, height)

注意:

var age int = 20

name, age := "XiaoYang", 21  
// 這種情況不會(huì)報(bào)錯(cuò),我們覺得是重復(fù)定義,冒號(hào)左側(cè)只要有一個(gè)沒有定義過得變量就可以。

fmt.Println(name, age)

總結(jié):

  • 變量類型在定義階段就確定了,一旦確定,不允許改變
  • 變量不可以重復(fù)定義
  • 變量要先定義在使用
  • 變量定義規(guī)范
  • 變量命名建盡量使用駝峰(大小寫有特殊意義)
  • Go 文件命名建議用下劃線
  • 一個(gè)名字必須以一個(gè)字母(Unicode字母)或下劃線開頭,后面可以跟任意的字母、數(shù)字或下劃線
  • 大寫字母和小寫字母是不同的:Name name 是兩個(gè)不同的變量
  • 關(guān)鍵字和保留字都不建議用作變量名

三、常量

常量定義的定義使用 const 關(guān)鍵字定義,不允許改變

方式一:

package main

import "fmt"

func main() {
   const age int = 20 // 不允許修改,修改會(huì)報(bào)錯(cuò)

   fmt.Println(age)
}

方式二:類型推導(dǎo)

package main

import "fmt"

func main() {
   const age = 20 

   fmt.Println(age)
}

注意:不能使用 := 這種方式定義,這樣就是定義變量了

四、基礎(chǔ)數(shù)據(jù)類型

1、數(shù)字

// 有符號(hào)整形
int: 在32位機(jī)器是int32,在64位機(jī)器是int64
int8: 表示整數(shù)范圍是:8個(gè)比特位,8個(gè)bit是1byte ,第一位表示正負(fù)數(shù)0/1, 所以是2的7次方-1 的范圍
int16: 2的15次方減一
int32: 2的32次方減一
int64: 2的64次方減一
byte: 等于int8
short: 等于int16

// 無符號(hào)整形
uint8: 沒有負(fù)數(shù)表示,所以是2的8次方減一
uint16: 同上
uint32:
uint64:

2、浮點(diǎn)型(小數(shù),32/64表示小數(shù)點(diǎn)后長(zhǎng)度多少位)

float32
float64

3、布爾(Bool)

// 數(shù)據(jù)類型默認(rèn)值:

數(shù)字類型是  0
字符串類型是    空字符串
布爾類型  false

4、字符串

// 雙引號(hào)包裹
// 單引號(hào)包裹

到此這篇關(guān)于Go變量與基礎(chǔ)數(shù)據(jù)類型詳情的文章就介紹到這了,更多相關(guān)Go變量與基礎(chǔ)數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言實(shí)現(xiàn)依賴注入的示例代碼

    go語言實(shí)現(xiàn)依賴注入的示例代碼

    依賴注入和控制反轉(zhuǎn)恰恰相反,它是一種具體的編碼技巧,我們不通過 new 的方式在類內(nèi)部創(chuàng)建依賴類的對(duì)象,而是將依賴的類對(duì)象在外部創(chuàng)建好之后,通過構(gòu)造函數(shù)、函數(shù)參數(shù)等方式傳遞給類來使用,本文將給大家介紹go語言實(shí)現(xiàn)依賴注入,需要的朋友可以參考下
    2024-01-01
  • Go?1.22版本新特性前瞻

    Go?1.22版本新特性前瞻

    這篇文章主要為大家介紹了Go?1.22版本新特性前瞻,包含語言的變化,編譯器、運(yùn)行時(shí)與工具鏈等應(yīng)用對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • golang判斷兩個(gè)事件是否存在沖突的方法示例

    golang判斷兩個(gè)事件是否存在沖突的方法示例

    這篇文章主要為大家詳細(xì)介紹了golang判斷兩個(gè)事件是否存在沖突的方法示例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • gtoken替換jwt實(shí)現(xiàn)sso登錄的排雷避坑

    gtoken替換jwt實(shí)現(xiàn)sso登錄的排雷避坑

    這篇文章主要為大家介紹了gtoken替換jwt實(shí)現(xiàn)sso登錄的排雷避坑,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語言中ORM框架GORM使用介紹

    Go語言中ORM框架GORM使用介紹

    GORM是Go語言中最受歡迎的ORM庫之一,它提供了強(qiáng)大的功能和簡(jiǎn)潔的?API,讓數(shù)據(jù)庫操作變得更加簡(jiǎn)單和易維護(hù),本文將詳細(xì)介紹GORM的常見用法,包括數(shù)據(jù)庫連接、模型定義、CRUD、事務(wù)管理等方面,幫助大家快速上手使用GORM進(jìn)行Web后端開發(fā)
    2023-06-06
  • 詳解Go語言中接口應(yīng)用模式或慣例介紹

    詳解Go語言中接口應(yīng)用模式或慣例介紹

    這篇文章主要為大家詳細(xì)介紹了Go語言中接口應(yīng)用模式或慣例介紹的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • golang coroutine 的等待與死鎖用法

    golang coroutine 的等待與死鎖用法

    這篇文章主要介紹了golang coroutine 的等待與死鎖用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 聊聊golang的defer的使用

    聊聊golang的defer的使用

    這篇文章主要介紹了聊聊golang的defer的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 使用Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例

    使用Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例

    本文主要介紹了Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文詳解go閉包(Closure)使用教程

    一文詳解go閉包(Closure)使用教程

    在Go語言中,閉包(Closure)是一種特殊的函數(shù),它可以捕獲其創(chuàng)建時(shí)所在作用域中的變量,本文給大家詳細(xì)介紹了go閉包(Closure)使用教程,感興趣的朋友可以參考下
    2024-01-01

最新評(píng)論