GO语言学习的一点小笔记


好记性不如烂笔头~

坚持是世界上最难的小事

1.import包前的下划线

只能引用指定包里面的init函数(所谓的init函数就是初始化调用。import的包里,
如果写了init函数,在被导入的时候,会执行该方法),调用该包的其它函数会报错。如下图所示。偷懒不贴代码,直接上图,鹅鹅鹅饿鹅鹅鹅鹅~
在这里插入图片描述

2.interface的使用

入门佳文,可以先看下《Go语言中你不知道的Interface详解》转载
概念:
(1)如果一个结构体绑定的方法包含接口的所有方法,即认为实现了该接口
(2)将对象赋值给接口时,会发生拷贝,而接口的存储是指向这个复制的指针,复制的无法修改原来状态,也无法获取指针

package myinterface

//定义接口
type INewsService interface {
	//获取资讯的评论数
	GetNewsCommentNum() int
}

//接口实现类:包含了接口定义的方法-同名同参同返回值
type NewsService struct {
	//变量名首字母记得要大写哦,NewsService的对象才可以引用
	//图片域名前缀
	ImagePrefix string
}

//属于NewsService里的方法
func (newsService NewsService) GetNewsCommentNum() int {
	return 1
}

//没有和接口绑定
//内部方法(方法名的首字母需大写,对象才可引用)
//成员变量进行赋值
func SetImagePrefix(newsPointer *NewsService, prefix string) {
	newsPointer.ImagePrefix = prefix
}


func main() {

	//自动推导类型的是struct类型
	newsServceStruct := myinterface.NewsService{"http://img.xxx.com/"}

	fmt.Println("自动推导可以引用内部变量:", newsServceStruct.ImagePrefix)
	newsServceStruct.GetNewsCommentNum()

	//接口的存储是拷贝后对象(只拷贝接口定义的那些方法)的指针
	var newsServiceInterface myinterface.INewsService = myinterface.NewsService{}
	fmt.Println("接口类型无法引用内部变量:%s", newsServiceInterface.ImagePrefix) //此处编译错
	newsServiceInterface.GetNewsCommentNum()

	//直接取对象的地址 ===> 指针 ,只能引用到NewsService的变量,方法
	newsServicePointer := &myinterface.NewsService{}
	fmt.Println("指针可以引用内部变量:%s", newsServicePointer.ImagePrefix)
	newsServicePointer.GetNewsCommentNum()
	newsServicePointer.SetImagePrefix(&newsServceStruct, "http://")//此处编译错


	//类似java里的静态方法
	myinterface.SetImagePrefix(&newsServceStruct, "http://")
	fmt.Println(newsServceStruct.ImagePrefix)

	//与接口绑定的方法
	myinterface.GetNewsCommentNum()//此处编译错
}

3.string和byte[]

string与[]byte的直接转换是通过底层数据copy实现的

	//如果是多个JSONArray(java里)类型的,可以最外层用`(键盘Esc下的键)包裹起来
   var jsonByte  []byte = []byte(`[{"Id":1},{"Id":2}]`)
  var a = []byte("hello world")
  var b = string(a)

4.打印结构体

package main

import "fmt"

type info struct {
    name string
    id int
}

func main()  {
    v := info{"Nan", 33}
    fmt.Printf("%v\n", v)
    fmt.Printf("%+v\n", v)
}

-------我是可爱的分割线------
输出结果:
{Nan 33}
{name:Nan id:33}

多个+号,可以打印出属性名

3.encoding/json的使用

。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值