Golang 入门笔记(二)中
目錄
文章目錄
- 目錄
- 轉換不同的數據類型
- 指針
- 指針地址和指針類型
- 使用指針修改值
- 使用指針變量獲取命令行的輸入信息
- 創建指針 new()
- 變量生命期
- 棧
- 堆
- 變量逃逸
- 字符串應用
- 計算字符串長度
- 遍歷字符串
- 獲取字符串的某一段字符
轉換不同的數據類型
可以用類型+變量的方式強制轉換:
int(a)
注意大數變小數時會有截斷問題。
比如:
var a int32=123456789
int16(a)
a就會變小
指針
指針概念在Go語言中被拆分為兩個核心概念:
1類型指針
允許對這個指針類型的數據進行修改。
不能進行偏移和運算。
2切片
由指向起始元素的原始指針、元素數量和容量組成。
安全指針不越界
指針地址和指針類型
每個變量在運行時都擁有一個地址,這個地址代表變量在內存中的位置。
ptr:=&v
ptr 為指針
輸出v的地址
使用*ptr 可以得到v的值。
使用指針修改值
通過指針可以修改值。
func swap(a,b *int){
t:=*a
*a:=*b
*b=t
}
x,y:=1,2
swap(&x,&y)
使用指針變量獲取命令行的輸入信息
package main//導入系統包 import ("flag""fmt" )//定義命令行參數 var mode = flag.String("mode1", " ", "process mode")func main() {flag.Parse()fmt.Println(*mode) } PS E:\go\mywork> go run parse.go --mode1=ffast ffast創建指針 new()
str:=new(string)
*str=“ninja”
變量生命期
變量能夠使用的生命范圍
棧
擁有特殊規則的線性表數據結構。
先進后出。
內存的分配和釋放,相當快。
函數結束后出棧。
堆
無規則數據,大小位置,存放位置未知,過一段時間后需要釋放數據。
內存碎片
變量逃逸
自動決定變量分配方式,提高運行效率。
編譯器根據變量的特征和生命周期,決定使用堆還是棧。
1逃逸分析
不影響程序運行的到棧,其他存活的主程序結束的到堆。
2 取地址發生逃逸
這兩個較為復雜,以后詳細分析
3 原則
go語言不希望開發者把精力放在內存如何分配上。
編譯器的原則是
變量是否被取地址
變量是否逃逸。
字符串應用
字符串類型在業務中的應用可以說是最廣泛的。
計算字符串長度
Go 語言的內建函數 len(),可以用來獲取切片、字符串、通道(channel)等的長度。
下面的代碼可以用len()來獲取字符串的長度。
遍歷字符串
1遍歷每一個ASCII字符
使用for
for i:=0;i<len(theme);i++
2 按Unicode字符遍歷字符串
使用range
for _,s:=range theme
獲取字符串的某一段字符
可以使用string.Index()函數在字符串中搜索另外一個字串。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Golang 入门笔记(二)中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql 持久连接_PHP M
- 下一篇: 输入域html,我可以让HTML输入表单