菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
1432
0

Go 基础教程--3-类型与变量

原创
05/13 14:22
阅读数 1631

作业:

既然导入多个包时可以进行简写,那么声明多个常量、全局变量或一般类型(非接口、非结构)是否也可以用同样的方法呢?

答案:

是可以的!验证如下

package main
import std "fmt"

const (
    PI = 3.14
    const1 = "1"
    const2 = 2
    const3 = 3
)

var (
    name = "gopher"
    name1 = "1"
    name2 = 2
    name3 = 3
)

type (
    newType int
    type1 float32
    type2 string
    type3 byte
)

func main() {
    std.Println("hello1")
}

Go基本类型

一、布尔型:bool

  1. 长度:1字节
  2. 取值范围:true、false
  3. 注意事项:不可用数字代表true或false

二、整型:int/uint

  1. 根据运行平台可能是32位或64位

三、8位整型:int8/unit8

  1. 长度:1字节
  2. 取值范围: -128 ~ 127 / 0 ~ 255

四、字节型:byte(unit8别名)

  1. 16位整型:int16/uint16
    • 长度:2字节
  2. 32位整型:int32(rune)/uint32
    • 长度:4字节
    • 取值范围:-2^32/2~2^32/2-1/0~2^32-1
  3. 64位整型:int64/uint64
    • 长度:8字节
    • 取值范围:-2^64/2~2^64/2-1/0~2^64-1
  4. 浮点型:float32/float64
    • 长度:4/8字节
    • 小数位:精确到7/15小数位
    • 取值范围:-32768~32767/0~65535
  5. 复数:complex64/complex128
    • 长度:8/16字节
  6. 足够保存指针的 32 位或 64 位整数型:uintptr
  7. 其它值类型:
    • array、struct、string
  8. 引用类型:
    • slice、map、chan
  9. 接口类型:inteface
  10. 函数类型:func

类型零值

零值并不等于空值,而是当变量被声明为某种类型后的默认值,
通常情况下值类型的默认值为0,bool为false,string为空字符串

package main

import "fmt"

func main() {
    var a bool
    fmt.Println(a)
}
//int 0  
//bool false 
//string ''
//byte 0

判断长度是否够用

package main

import (
    "fmt"
    "math"
)

func main() {
    //var a byte
    fmt.Println(math.MaxInt8) //127
    fmt.Println(math.MaxInt32) //2147483647

}

类型别名

中文也可以做别名,不建议

package main

import (
    "fmt"
)
//别名
type (
    byte uint8
    rune int32
    文本 string
)
func main() {
    var b  文本
    b = "中文类型名"
    fmt.Println(b)

}

单个变量的声明和赋值

  1. 变量的声明格式:var a int
  2. 变量的赋值格式:a = 123 或者 var a int = 123
  3. 声明的同时赋值:a [int] := 123
func main() {
    //var b  文本
    //b = "中文类型名"
    var a float32
    a = 1.1
    fmt.Println(a)
    fmt.Println(math.MaxUint8)

}
//小数的长度问题

全局变量不支持 :=声明

多个变量的声明与赋值

  1. 全局变量的声明可使用 var() 的方式进行简写
  2. 全局变量的声明不可以省略 var,但可使用并行方式
  3. 所有变量都可以使用类型推断
  4. 局部变量不可以使用 var() 的方式简写,只能使用并行方式
func main() {
    var a, b, c, d int = 1, 2, 3, 4
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
    fmt.Println(d)
}

空白值忽略

func main() {
    var a, _, c, d int = 1, 2, 3, 4
    fmt.Println(a)
    //fmt.Println(b)
    fmt.Println(c)
    fmt.Println(d)
}
//用于多个返回值

变量的类型转换

Go中不存在隐式转换,所有类型转换必须显式声明
转换只能发生在两种相互兼容的类型之间
类型转换的格式:

[:]= ()

``` func main() { var a float32 = 100.1 fmt.Println(a) b := bool(a) fmt.Println(b) } //cannot convert a (type float32) to type bool ```

#### 作业

``` func main() { var a int = 65 b := string(a) fmt.Println(b) } //A ```

#### 答案分析:

string()表示将数据转换成文本格式,因为计算机存储的任何东西本质上都是数字,因此此函数自然地认为我们需要的是用数字65表示的文本A

强制类型转换

``` package main

import ( "fmt" "strconv" ) func main(){ var a int = 65 b := strconv.Itoa(a) fmt.Println(b) } //65 ```

``` package main import ( "fmt" "strconv" ) func main(){ var a int = 65 b := strconv.Itoa(a) a,_ = strconv.Atoi(b)

fmt.Println(a) fmt.Println(b) } //65 //65 ```

go

发表评论

0/200
1432 点赞
0 评论
收藏
为你推荐 换一批