GO语言学习笔记

1.占位符

占位符说明举例输出
%s输出字符串表示(string类型或[]byte)Printf("%s", []byte("Go语言"))Go语言
%q双引号围绕的字符串,由Go语法安全地转义Printf("%q", "Go语言")"Go语言"
%d十进制表示Printf("%d", 0x12)18
%#v相应值的Go语法表示Printf("#v", people)main.Human{Name:"zhangsan"}
%T相应值的类型的Go语法表示Printf("%T", people)main.Human
%v相应值的默认格式。Printf("%v", people){zhangsan}
%+v打印结构体时,会添加字段名Printf("%+v", people){Name:zhangsan}

2.符号说明

1):= 表示声明一个语句,只能被使用在函数体内

例如:intVal := 1 相等于:

var intVal int

intVal = 1

// 可以将var f string = "goVar" 简写为 f := "goVar"

2) $i 标识获取变量i的内存地址

例如:0xf84000012

3) _ 表示空白标识符,被用于抛弃值

例如:_, b = 5, 7中5就是一个抛弃值

这样做的原因是因为Go语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数中得到所有的返回值。

4)var : 用于变量的定义,是可以被修改的

例如:var ast string = "abc"

5) const : 用于常量的定义,是不会被修改的

例如: const AST string = "abc"

6) iota :特殊常量,可以认为是一个可以被编译器修改的常量。

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行,常量声明将使iota计数一次(iota也可以理解为const语句中的行索引)。

例如:

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

运行结果:
0 1 2 ha ha 100 100 7 8

7)* :指针变量,指向内存地址中的值

8) defer : 延迟执行语句,类似于java中的finally,表示最后被执行。

例如

fi, _ := os.Open(fp)
defer fi.Close()
fmt.Sprintf("check file!!!")

3.类型转换

原始类型

[
  {
    "name": "xiao1",
    "age": 3,
    "gender": "boy"
  },
  {
    "name": "xiao2",
    "age": 4,
    "gender": "girl"
  }
]
    type User struct {
	    Name       string    `json:"name"`
	    Age        int       `json:"age"`
	    Gender     string    `json:"gender"`
    }

    var names []string
    respReturn := []User{}   
    err = json.Unmarshal(respBody, &respReturn)
	if err != nil {
		klog.Errorf("respbody:%v, err: %v\n", string(respBody), err)
	}
	for i := range respReturn {
		names = append(names , respReturn[i].Name)
	}

4.结构体Struct赋值

package main

import (
	"fmt"
)

type User struct {
	Id     string `json:"id"`
	Name   string `json:"name"`
	Status string `json:"status"`
	Type   string `json:"type"`
}

func main() {
    # 方式一
	var user User
	user.Id = "10001"
	user.Name = "李焕英"
	user.Status = "启用"
	user.Type = "影视"
	fmt.Printf("用户信息是:%+v \n", user)
	fmt.Printf("用户信息是:%#v \n", user)
	fmt.Printf("用户信息是:%T \n", user)
    
    # 方式二
	filem := User{
		Id:     "10001",
		Name:   "旋转",
		Status: "启用",
		Type:   "电视",
	}
	fmt.Printf("影视信息是:%+v\n", filem)
}

运行结果:

用户信息是:{Id:10001 Name:李焕英 Status:启用 Type:影视} 
用户信息是:main.User{Id:"10001", Name:"李焕英", Status:"启用", Type:"影视"} 
用户信息是:main.User
影视信息是:{Id:10001 Name:旋转 Status:启用 Type:电视}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值