Golang学习 Day_03

1、布尔类型bool

  1. 布尔类型也叫bool型,只允许取值true和false

  1. bool类型只占一个字节。

  1. boolean类型类似于逻辑运算,一般用于程序流程的控制

package main


import (
    "fmt"
    "unsafe"
)


func main() {
    var b = false
    fmt.Println("b=", b)


    //bool类型只占一个字节。
    fmt.Println("b所占空间为:", unsafe.Sizeof(b))
}

2、字符串类型

字符串就是一串固定长度的字符串连起来的序列。Go中的字符串是有单个字节连接起来的,Go语言的字符串的字节使用UTF-8编码表示的Unicode文本

2.1使用细节

  1. Golang统一使用utf-8编码,不会出现中文乱码

  1. 字符串一旦赋值,字符串就不能修改了,在Go中字符串时不可变的

//字符串一旦赋值,字符串就不能修改了,在Go中字符串时不可变的
var str string = "hello"
str[0] = 'a'        //不能去修改str的内容,即go中的字符串是不可变的。
  1. 字符串的两种表现形式

  1. 双引号,会识别转义字符

  1. 反引号

//字符串的两种表现形式:
//   a. 双引号,会识别转义字符
//   b. 反引号(`)
var daima string = `
package main


import "fmt"

func main() {
var address string = "德州学院"
fmt.Println(address)
}
`
fmt.Println(daima)
  1. 字符串拼接方式

  1. 当字符串太长时,可以分行写,但是需要将 + 放在上一行

3、基本数据类型的默认值

在go中,所有的数据类型都有一个默认值,又叫零值

基本数据类型默认值如下

整形: 0

浮点型: 0

布尔型: false

字符串: ""

4、基本数据类型的转换

介绍

go在不同类型的变量之间赋值时需要显式转换

基本语法

表达式T(v)将值v转换为类型T

T:数据类型

v:需要转换的变量

package main


import "fmt"


func main() {
    //字符串拼接方式
    var i int32 = 100
    var nu float32 = float32(i)


    var i1 int8 = int8(i)
    var i2 int64 = int64(i) //低精度-->高精度
    fmt.Println(nu)
    fmt.Printf("i1=%v,i2=%v", i1, i2)
}

在转换中,结果如果将高精度转换为低精度时,编译不会出错,只是转换的结果是按溢出处理,和我们想的结果不同。

5、基本数据类和string类型的转换

在程序开发中,经常把数据类型转换为string或将string转换为基本数据类型

基本数据类型转string

  1. 方式一:fmt.Sprintf("%参数",表达式)

Sprintf根据format参数生成格式化字符串并返回该字符串

var num1 int = 10
var num2 float32 = 123.034
var num3 byte = 'q'
var num4 bool = true
var str string


str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%c", num3)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%t", num4)
fmt.Printf("str type %T str = %v\n", str, str)
  1. 方式二:strconv函数

var num5 int = 10
var num6 float64 = 123.034
var num7 bool = true
var str string


str = strconv.FormatInt(int64(num5), 10)
fmt.Printf("str type %T str = %v\n", str, str)
str = strconv.FormatFloat(num6, 'f', 10, 64)
fmt.Printf("str type %T str = %v\n", str, str)
str = strconv.FormatBool(num7)
fmt.Printf("str type %T str = %v\n", str, str)


// strconvn包里的一个函数
var num8 int = 4567 
str = strconv.Itoa(num8)
fmt.Printf("str type %T str = %v\n", str, str)
}

string转基本类型

  1. 使用strconv包的函数

package main


import (
    "fmt"
    "strconv"
)


func main() {
    var str string = "true"
    var b bool


    //说明:
    //1.strconv.ParseBool(str)会返回两个值(value bool,err err)
    //2.因为只想获取到value bool;不想获取err 所以使用_忽略
    b, _ = strconv.ParseBool(str)
    fmt.Printf("b type %T b = %v\n", b, b)


    var str2 string = "123456"
    var n1 int64
    n1, _ = strconv.ParseInt(str2, 10, 64)
    fmt.Printf("n1 type %T n1 = %v\n", n1, n1)


    var str3 string = "123.456"
    var f1 float64
    f1, _ = strconv.ParseFloat(str3, 64)
    fmt.Printf("f1 type %T f1 = %v\n", f1, f1)


}

如果返回的是int64或者float64,若要转换为int32,float32要自行转换

注意事项

要确保string类型转换为有效数据,若转换失败默认零值

6、指针

基本介绍

  1. 基本数据类型,变量村的就是值,也叫值类型

  1. 获取变量的地址,使用地址符 &

  1. 指针类型,指针变量存的是一个地址,这个地址指向空间才是值

  1. 获取指针类型的值,使用 *变量

package main


import "fmt"


func main() {
    var i int = 10


    fmt.Println(&i)


    //1.ptr 是一个指针变量
    //2.ptr 的类型是*int
    //3.ptr 本身的值是&i
    var ptr *int = &i
    fmt.Printf("ptr = %v\n", ptr)
    fmt.Printf("ptr 的地址=%v\n", &ptr)
    fmt.Printf("ptr 指向的值=%v\n", *ptr)
}

6、值类型和引用类型

  1. 值类型:基本数据类型,int

  1. 引用类型:指针,slice切片、map、管道

特点

  1. 值类型:变量直接存储值,内存通常在栈中分配

  1. 引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾有GC来回收

7、标识符的命名规范

  1. golang对各种变量、方法、函数等命名时使用的字符序列成为标识符

  1. 凡是自己起名字的地方都是标识符

命名规范

  1. 由26个英文字母带小写,0-9,_组成

  1. 数字不可以当作开头

  1. Golang中严格区分大小写

  1. 标识符不能内包含空格

  1. 下划线"_"本身在golang中是一个特殊的标识符,成为空标识符,可以代表其他的表示符,但是对应的值会被忽略。所以仅能被作为占位符使用,不能作为标识符使用。

  1. 不能被系统的保留关键字做为标识符。

注意事项

  1. 包名:保持package的名字与目录的名字保持一致,简短,有意义,不要与标准库冲突

  1. 变量名,函数名、常量名尽量采用驼峰法

  1. 如果变量名,函数名,常量名首字母大写,则可以被其他的包访问,如果首字母小写,则只能在本包中使用,在golang中没有public等关键字。

参考文献:

https://www.bilibili.com/video/BV1ME411Y71o/ 尚硅谷Golang入门到实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值