前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO的几个输出【GoLang】

GO的几个输出【GoLang】

作者头像
来杯Sherry
发布2023-05-25 14:34:13
2040
发布2023-05-25 14:34:13
举报
文章被收录于专栏:第一专栏第一专栏

输出

1、刚开始接触,GO的输出还挺多,在最常用的两个方面做了比较😀

  • 纯文本输出
代码语言:javascript
复制
	fmt.Println("hello world!")
	fmt.Print("hello world!!\n")
	fmt.Printf("hello world!!!\n")
//res
hello world!
hello world!!
hello world!!!
  • 携带变量输出
代码语言:javascript
复制
	var a int = 1
	var b = 2
	var c = 3
	fmt.Println("hello world! like:", a,"wo",b,"再来一杯")
	fmt.Print(a,"wo",c,"不喝了","不喝了","\n")
	fmt.Printf("the %d times to say hello world!!! \n", c)
//res
hello world! like: 1 wo 2 再来一杯
1wo3不喝了不喝了
the 3 times to say hello world!!!
  • summary: fmt.Println("") 适合输出像python列表那种形式的内容 fmt.Printf("") 前者的不换行,并且不同类型的内容输出时间会拼接或者间隔 fmt.Print("") 和c语言的printf非常类似

2、fmt.Printf("%v %T",a,a) 输出 a 的值和类型 %d %s等等也是支持的,%v是通用的 3、支出复数输出(后面再学)

函数

1、go 语言return不是原子操作,在底层分为两步执行

  • 第一步,返回值赋值
  • 第二步,真正的return返回
  • 函数中,如果存在defer ,那么defer执行的时机是在第一步和第二步之间

2、defer调用遵循栈的规则,怕忘记某条语句最后执行,最先把它写出来加上defer,表示延迟执行 3、返回多个值 4、自执行函数、匿名函数(gin框架里自执行)

内置函数

1、错误机制,panic("error!")(有时间再学)

变量

1、类型别名(有空再学)

接口

1、不关心变量类型,只关心能调用它的方法 2、接口是一种特殊的类型它规定了变量有哪些方法

代码语言:javascript
复制
package main

import (
	"fmt"
)

type speaker interface{
	speak()
}
type cat struct{}
type dog struct{}

func (d dog) speak() {//方法,(规定:接收者首字母d 接收者:dog)
	fmt.Println("www")
}

func (c cat) speak(){
	fmt.Println("mmm")
}

func da(x speaker){
	x.speak()
} 

func main() {
	
	var d1 dog
	var c1 cat
	da(d1)
	da(c1)

}

3、面向过程编程(随意),面向对象编程(臃肿),面向接口编程

并发

1、goroutine,用户态线程、100 000 个是可以的,优雅的等待并行结束,启动时需要时间和资源,防止在main结束后还没有结束而被迫结束,所以要等待wg.add()``wg.down()``wg.wait(),相比sleep()要优雅的多,结束间隔没有那么突兀, 2、GMP,不学,默认跑满,效率高,使用GMP可用于测试,日志收集 3、一个软件,通常对应一个进程,但可以跑在多个线程中,

go mod

1、go.1.11后,最新的包管理工具go mod 2、开启GO111MODULE=on 模块支持后,包目录会变,如gin,变为pkg/mod/github.com,而不再是直接pkg/github.com 3、启动gin,目前用的vscode,执行run code是不可以的!!会提示找不到包,使用原始的go build main.go./main来启动,

闭包

1、

代码语言:javascript
复制
package main

import "fmt"

func adder() func(int) int {
	var x int
	fmt.Println("x1:", x)
	return func(y int) int {
		fmt.Println("y:", y)
		fmt.Println("x2:", x)
		x += y
		fmt.Println("x3:", x)
		return x
	}

}
func main() {
	var f = adder()
	fmt.Println(f(10)) //10
	fmt.Println(f(20)) //30
	fmt.Println(f(30)) //60

}

输出:
x1: 0
y: 10
x2: 0
x3: 10
10
y: 20
x2: 10
x3: 30
30
y: 30
x2: 30
x3: 60
60

(后面再学,两层,x可输出、x值又保存在外层环境中,下次继续用)

三个内置数据结构

创建切片、哈希表和 Channel 等内置的数据结构(后面再学)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输出
  • 函数
  • 内置函数
  • 变量
  • 接口
  • 并发
  • go mod
  • 闭包
  • 三个内置数据结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档