go语法基础与其他语言对比学习(4) | 青训营

84 阅读2分钟

基本数据类型(续)

基本数据类型的默认值

  • 在Golang中数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值(默认值又叫零值)
  • 分别是int类型(0)、float类型(0)、bool类型(false)、string类型(“”),以上跟Java默认值一样

基本数据类型之间的转换

  • Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)
  • 语法:T(v) 将值v转换为类型T。T : 就是数据类型,v : 就是需要转换的变量(跟其他语言强制转换语法稍微不同。其他语言是在赋值前加上(需要强制转换的类型),又或者调用相应api,如Java的tostring来进行转换)

基本数据类型转为string方法:
方式1:fmt.Sprintf("%参数",表达式) (%参数,跟c的printf需要填的基本一样)
方式2:使用strconv包的函数,如strconv.FormatBool,跟Java的format语法很像,要把什么类型的转换为string。那也就是Format+对应的类型(首字母大写)

import "fmt"
 
func main(){
    var age int = 18
    //&符号+变量 就可以获取这个变量内存的地址
    fmt.Println(&age) //0xc0000a2058
    //定义一个指针变量:
    //var代表要声明一个变量
    //ptr 指针变量的名字
    //ptr对应的类型是:*int 是一个指针类型 (可以理解为 指向int类型的指针)
    //&age就是一个地址,是ptr变量的具体的值
    var ptr *int = &age
    fmt.Println(ptr)
    fmt.Println("ptr本身这个存储空间的地址为:", &ptr)
    //想获取ptr这个指针或者这个地址指向的那个数据:
    fmt.Printf("ptr指向的数值为:%v", *ptr) //ptr指向的数值为:18
}

以上代码块可知,指针声明则和c/c++基本一致,var 变量名称 *类型 在go则代表声明了一个指针型变量,直接用这个变量则表示所存储的值的地址,*变量则代表这个存储的值,&变量则代表这个指针型变量本身的地址。