• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Golang 入门笔记(二)中

互联网 diligentman 6天前 11次浏览

目录

文章目录

  • 目录
    • 转换不同的数据类型
    • 指针
      • 指针地址和指针类型
      • 使用指针修改值
      • 使用指针变量获取命令行的输入信息
      • 创建指针 new()
      • 变量生命期
      • 变量逃逸
      • 字符串应用
        • 计算字符串长度
        • 遍历字符串
        • 获取字符串的某一段字符

转换不同的数据类型

可以用类型+变量的方式强制转换:
int(a)
注意大数变小数时会有截断问题。
比如:
var a int32=123456789
int16(a)
a就会变小

指针

指针概念在Go语言中被拆分为两个核心概念:
1类型指针
允许对这个指针类型的数据进行修改。
不能进行偏移和运算。
2切片
由指向起始元素的原始指针、元素数量和容量组成。
安全指针不越界

指针地址和指针类型

每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。
ptr:=&v
ptr 为指针

fmt.Printf("%p ",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:gomywork> 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()函数在字符串中搜索另外一个字串。


喜欢 (0)