PHP->GO 基础-数据类型-笔记

字符类型

package main
import  "fmt"
func main(){
    var ch byte //声明字符类型
    //格式化输出 %c以字符方式打印,“%d以整型方式打印”
    ch = 97 
    fmt.Printf("%c,%d\n",ch,ch)

    ch =  'a' //字符使用单引号
    fmt.Printf("%c,%d\n",ch,ch)

    //大写转小写,小写转大写,大小写相差32,小写大
        fmt.Printf("大写:%d, 小写:%d\n", 'A', 'a')
        fmt.Printf("大写转小写:%c", 'A'+32)
        fmt.Printf("小写转大写:%c", 'a'-32)
}

字符串类型

package main
import  "fmt"
func main(){
    var str1 = string //声明变量
    str1 = "abc"
    str2 := "mike" //自动推导
   //len() 内置函数可获取字符串长度
   fmt.PrintIn("长度:", len(str2))
   // 支持使用key 获取单个字符 例如 str1[0] = "a"

}
类型 string byte
字符数量 可以多个(var a string = "efg") 只能是一个 (var a byte = 'b') 转义字符除外
符号 " " ' '
隐藏结束符 \0

复数类型

package main
import  "fmt"
func main(){
var t complex128  //声明类型
 t = 2.1 + 3.14i //赋值 (2.1 + 3.14i) complex128
 t2  := 3.14+4.4i //自动推导类型  (3.14+4.4i) complex128
 //通过内建函数,取实步和虚部
 real(t) //取实部
 imag(t) //取虚部
}

格式化输出

package main
import  "fmt"
func main(){
 a := 10
 b := "abc"
 c := 'a'
 d := 3.14
 // %%T操作变量所属类型
 fmt.Printf("%T,%T,%T,%T\n",a,b,c,d)
 //%d 整型格式
 //%s 字符串格式
 //%c 字符个数
 //%f 浮点型个数
  fmt.Printf("%d,%s,%c,%f\n",a,b,c,d)
}

变量的输入

package main

import (
    "fmt"
)

func main() {
    var a int //声明变量
    fmt.Printf("请输入变量a:")
    //阻塞等待用户的输入
    fmt.Scanf('%d',&a) //注意加 &
    fmt.Scan(&a) //不需要输入格式,更简易
    fmt.Println("a=",a)
}

变量作用域

package main

import "fmt"

var a byte //全局变量 在函数外定义
func main() {
    var a int //局部变量
    //不同作用域,允许定义同名变量
    //使用变量的原则,就近原则
    fmt.Printf("T%\n", a) //int
    {
        var a float32
        fmt.Printf("2:T%\n", a) //float32
    }
    test()
}

func test() {
    fmt.Printf("3:T%\n", a) //bety
}

类型转换

package main
import "fmt"
func main() {
    // 不能转换的类型,叫不兼容类型
    var flag bool
    flag = true
    fmt.Printf("flag = %t\n",flag)
    //bool 类型不能转为int 
    fmt.Printf("flag = %d\n",int(flag)) 
    //0就是假 非0就是真
    //整型也不能转为bool
     flag = bool(1) //报错
    var ch = byte 
    ch = 'a' //字符类型本质上就是整型
    var t = int
    t = int(ch) //类型转换, 吧ch的值取出来后,转成int 给t赋值
    fmt.Print("t= ",t)
}

类型别名

package main
import "fmt"
func main() {
    //给int64起一个别名叫bigint
    type bigint int64
    var a bigint //等价于 var a int 64
    fmt.Printf("a type is %T\n", a)
    //设置多个别称
    type (
        long int64
        char byte
    )
    var b long = 11
    var ch char = 'a'
    fmt.Printf("b= %d,ch =%c\n", b, ch)
}

运算符

非0就是真,0就是假(但是go 语言中的bool类型和int 类型不兼容)

判断一个数的范围 不能用 0<= a <= 10 需要用 0<= a && a<= 10

if判断语句

package main

import "fmt"

func main() {
    s := "屌丝"
    if s == "屌丝" {//与php区别在于 不需要()
        fmt.Println("ok")
    }
    //if支持1个初始化语句,初始化语句和判断以分号分割
    if a := 10; a == 10 {
        fmt.PrintIn("ok")
    }
}

switch语句

package main

import "fmt"

func main() {
    a := 2

    switch a {
    case 1:
        fmt.Println(1)
        //fallthrough //不跳出switch 语句,后面的无条件执行
        break //go语言保留了break 关键字 跳出switch  不写则默认包含
    case 2:
        fmt.Println(2)
        break
    case 3,4,5,6://case 后面可以写多个值
        fmt.Println(3)
        break
    default:
        fmt.Println(0)
    }

    //支持一个初始化语句,初始化语句和变量本身,以分号隔开
    switch b := 1; b {
    case 1:
        fmt.Println(1)
    case 2:
        fmt.Println(2)
    case 3:
        fmt.Println(3)
    default:
        fmt.Println(0)
    }

    score := 85
    switch { //可以没有条件
    case score > 90: //case 后面可以放条件(与php不同)
        fmt.Println(1)
    case score > 80:
        fmt.Println(2)
    case score > 70:
        fmt.Println(3)
    default:
        fmt.Println(0)
    }
}

for循环

package main

import "fmt"

func main() {
    //for 初始化条件;判断条件;条件变化{
    //  }
    //判断条件是否为真, i <= 100 , 如果为真,执行循环体,如果为假,跳出循环体
    // 条件变化 i++
    // 重复...
    num := 0
    for i := 1; i <= 10; i++ {
        num++
    }
    fmt.Println("num =", num)
}

range 的使用

package main

import "fmt"

func main() {
    str := "abc"
    //迭代打印每个元素,默认返回2个值
    for i, data := range str {
        fmt.Printf("str[%d]=%c\n", i, data)
    }
    //第二个返回值,默认丢弃,返回元素的位置(下标)
    for i := range str {
        fmt.Printf("str[%d]=%c\n", i, str[i])
    }
    for i, _ := range str {
        fmt.Printf("str[%d]=%c\n", i, str[i])
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!