IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【ByteDaily】Go语言基础 -> 正文阅读

[开发工具]【ByteDaily】Go语言基础


1.configure

  • 下载vscode&Go
    go
  • 设置gopath
 go env -w GOPATH=/Users/bytedance/go
  go env -w PATH=/Users/bytedance/bin
  • 设置goMod状态,goMod google
go env -w GOPROXY=https://goproxy.cn,direct

1.1Go语言了解

Go语言优缺点

1.2 vscode+go

在vs code进入指定code编译环境

  • mac terminal终端打开文件所在目录
code .
  • 先编译再运行
    (进入hello.go所在文件)
go build hello.go
./hello
  • 或直接run脚本
go run hello.go

1.3 go 项目管理

go mod init hello(在hello.go同级文件下)
go env (查看Go环境)

2.常用语法

2.1 go定义变量

package main

import "fmt"

/*定义全局变量*/
var global1 = 100
var global2 = 200

//func 是关键字,表示是一个函数
func main() {
	fmt.Println("姓名 \t年龄 \r")
	//fmt.Println("name \tage")

	//定义变量1
	var i int
	//i = 11
	fmt.Println("i=", i)
	//定义变量2
	name := "hhhh"
	fmt.Println("name", name)

	/* 一次性申请多个变量*/
	var n1, name2, x = 100, "jack", 88
	fmt.Println(x, name2, n1)

}

2.2 "+"号 字符类型

  • go也可以实现字符串拼接
  • float 32 float64
  • 无字符型,用byte保存单个字母字符(utf8编码)
  • int,int8,int16…uint,uint32…
  • bool类型
  • string为基本类型,字符串一旦确定就不能更改
  • go里面函数也是一种数据类型
  • map也是类型
    【highlight】
    查看数据类型和大小
  • golang默认64位浮点数
fmt.Print有几个变种:

Print:   输出到控制台,不接受任何格式化操作
Println: 输出到控制台并换行
Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出别的类型)
Sprintf:格式化并返回一个字符串而不带任何输出
Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout

2.3 字符串转换

/*字符串转数字
	// ParseInt 将字符串转换为 int 类型
	// s:要转换的字符串
	// base:进位制(2 进制到 36 进制)
	// bitSize:指定整数类型(0:int、8:int8、16:int16、32:int32、64:int64)
	// 返回转换后的结果和转换时遇到的错误
	// 如果 base 为 0,则根据字符串的前缀判断进位制(0x:16,0:8,其它:10)
	func ParseInt(s string, base int, bitSize int) (i int64, err error)
	*/
	var newstr string = "12345"
	var aa int64
	aa, _ = strconv.ParseInt(newstr, 10, 64)
	fmt.Println(aa)

2.4 JSON序列化与反序列化

package main

import (
	"encoding/json"
	"fmt"
)

//json序列化
type Student struct {
	Id   int    `json:"stuid"`
	Name string `json:"stuname"`
}

type Class struct {
	Title      string
	Mystudents []Student //切片
}

func main() {
	//创建一个班级结构体
	C1 := Class{
		Title:      "101班",
		Mystudents: make([]Student, 0, 20),
	}
	for i := 0; i < 10; i++ {
		//由于添加的是结构体,所以需要封装一下
		var temp Student
		temp.Id = i
		/*实例化结构体法二:
		 stu := Stu{
			Name: "张三",
			Age:  18,
			HIgh: true,
			sex:  "男",
		}*/

		//sprintf格式化字符串
		temp.Name = fmt.Sprintf("stu%02d", i)
		C1.Mystudents = append(C1.Mystudents, temp)
	}
	fmt.Printf("%v\n", C1)

	//json序列化:GO语言中数据->JSON格式的字符串
	data, err := json.Marshal(C1)
	if err != nil {
		fmt.Println("json marshal failed:", err)
		return
	}
	//json为字符串
	fmt.Printf("%s\n", data)

	//json反序列化:JSON格式字符串转为GO语言数据
	jsonstr := `{
		"Title":"101班",
		"Mystudents":[
			{
				"stuid":0,
				"stuname":"stu00"
			},
			{
				"stuid":1,
				"stuname":"stu01"
			}]
	}`
	var c2 Class
	json.Unmarshal([]byte(jsonstr), &c2)
	if err != nil {
		fmt.Printf("json unmarshal failed")
	}
	fmt.Printf("%v\n", c2)
}

2.5 defer用法

链接
函数返回的过程是这样的:先给返回值赋值,然后调用defer表达式,最后才是返回到调用函数中。

2.6 方法&函数

在Go语言中,函数是指不属于任何结构体、类型的方法,也就是说,函数是没有接收者的;而方法是有接收者的,我们说的方法要么是属于一个结构体的,要么属于一个新定义的类型的。

在Go语言中,函数是指不属于任何结构体、类型的方法,也就是说,函数是没有接收者的;而方法是有接收者的,我们说的方法要么是属于一个结构体的,要么属于一个新定义的类型的。

2.7 值类型接收&指针类型接收

李文周

  • 当方法作用于值类型接收者时,Go语言会在代码运行时将接收者的值复制一份。在值类型接收者的方法中可以获取接收者的成员值,但修改操作只是针对副本,无法修改接收者变量本身。

  • 指针类型的接收者由一个结构体的指针组成,由于指针的特性,调用方法时修改接收者指针的任意成员变量,在方法结束后,修改都是有效的。这种方式就十分接近于其他语言中面向对象中的this或者self。 例如我们为Person添加一个SetAge方法,来修改实例变量的年龄。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:39:21  更:2021-09-23 11:40:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:39:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码