当前位置: 首页 > news >正文

go - 学习笔记 - 1

go - 学习笔记 -1

    • hello world
    • 变量
    • 值拷贝
    • 匿名变量
    • 语句分隔符
    • 整型&浮点型&布尔型
    • 字符串类型
    • strings包的字符串函数


hello world

package main

import "fmt"

func main() {
	fmt.Println("hello world")
}

变量

package main

import "fmt"

func main() {
	// (1)先声明 在赋值
	// 声明变量 var 变量名 类型
	var age int
	fmt.Println(age) // 声明未复制,有默认值
	age = 22
	fmt.Println(age)

	// (2)声明并赋值,一行实现
	var name string
	name = "lin"
	fmt.Println(name)

	//var newName string = "new lin"
	var newName = "new lin"
	fmt.Println(newName)

	// (3)声明并赋值的简洁写法
	name2 := "lin2" // 全局变量,不可以使用 := 的这种简洁语法,必须用 var 去声明赋值
	fmt.Println(name2)

	// (4)声明多个变量
	var (
		a int    // 0
		b string // ""
		c bool   // false
	)
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)

	// (5) 一行声明赋值多个变量
	//var mingzi, nianling, hunfou = "lin", 33, false
	mingzi, nianling, hunfou := "lin", 33, false
	fmt.Println(mingzi, nianling, hunfou)
}

值拷贝

package main

import "fmt"

func main() {
	// (1) 值拷贝
	var x = 10
	var y = x
	x = 20
	fmt.Println(x)
	fmt.Println(y)

	// (2)
	var a = 1 + 1
	fmt.Println(a)
	var b = x * y
	fmt.Println(b)
}

匿名变量

package main

import "fmt"

func foo() (int, int) {
	return 100, 2
}

func main() {
	//var a, _ = 1,2
	var a, _ = foo()
	fmt.Println(a)
}

语句分隔符

package main

import "fmt"

func main() {
	// ;和换行符,作为语句分隔符
	//var x = 100; y = 200

	// 推荐用换行符作为分割符,会有更好的阅读性
	var x = 100
	var y = 200
	fmt.Println(x, y)
}

整型&浮点型&布尔型

package main

import (
	"fmt"
	"reflect"
)

func main() {
	// (1) 整型
	/*
				int8 可存1一个字节, 范围是:-128至127
			    int16 可存2个字节, 范围是:-32768至32767
			    int32 可存4个字节, 范围是:-2147483648至2147483647
				int64 可存8个字节, 范围是:-9223372036854775808至9223372036854775807

				uint8 可存1个字节, 范围是:0至255
		        uint16 可存2个字节, 范围是:0至65535
		        uint32 可存4个字节, 范围是:0至4294967295
		        uint64 可存8个字节, 范围是:0至18446744073709551615
	*/
	var x int8 = 100
	var y int16 = 200
	fmt.Println(x, y)

	// (2)浮点型
	/*
	   float32 可存4个字节, 范围是:-3.402823466e+38至3.402823466e+38
	   float64 可存8个字节, 范围是:-1.7976931348623157e+308至1.7976931348623157e+308
	*/
	var f1 float32 = 3.14159267890123
	var f2 float64 = 3.14159267890123
	fmt.Println(f1, reflect.TypeOf(f1))
	fmt.Println(f2, reflect.TypeOf(f2))

	var f3 = 2e10
	fmt.Println(f3, reflect.TypeOf(f3))

	// (3)布尔型
	var b1 bool = true
	var b2 bool = false
	fmt.Println(b1, reflect.TypeOf(b1))
	fmt.Println(b2, reflect.TypeOf(b2))

	c := 2 > 1
	fmt.Println(c, reflect.TypeOf(c))

	name := "lin"
	c2 := name == "root"
	fmt.Println(c2, reflect.TypeOf(c2))
	fmt.Println(name, reflect.TypeOf(name))
}

字符串类型

package main

import "fmt"

func main() {

	var s string // 默认为""
	s = "hello yuan"

	// 索引和切片 字符串 [索引] 字符串[start:end]  go不支持负数索引
	fmt.Println(string((s[1])))
	fmt.Println(string((s[6])))

	fmt.Println(string((s[0:5])))
	fmt.Println(string((s[:5])))
	fmt.Println(string((s[6:10])))
	fmt.Println(string((s[6:])))

	// 字符串拼接
	var s1 = "hi"
	var s2 = " yuan"
	fmt.Println(s1 + s2)

	// 转义符号 \反斜杠
	fmt.Println(string("1\n2\n3"))
	var s3 = "D:\\next\\go.exe"
	fmt.Println(s3)
	fmt.Println("It is \"main\".")

	// 多行打印
	fmt.Println("1. 红药")
	fmt.Println("2. 蓝药")
	fmt.Println("3. 武器")

	info := `
	1. 红药
    	2. 蓝药
	3. 武器
`
	fmt.Println(info)
}

strings包的字符串函数

package main

import (
	"fmt"
	"strings"
)

func main() {
	// 大小写转换
	var name = "Yuan"
	var newName = strings.ToUpper(name)
	fmt.Println(name)
	fmt.Println(newName)
	fmt.Println(strings.ToLower(name))

	// 包含
	var s = "rain yuan alivin"
	fmt.Println(strings.HasPrefix(s, "rain")) // 以xx开头
	fmt.Println(strings.HasPrefix(s, "in"))   // 以xx结尾
	fmt.Println(strings.Contains(s, "yuan"))  // 是否包含xx

	// 去除空格
	username := "  yuan "
	fmt.Println(strings.Trim(username, " ")) // 去除空格,返回无空格的字符串
	fmt.Println(username == "yuan")
	fmt.Println(strings.TrimSpace(username))       // 去掉前后空格
	fmt.Println(strings.TrimLeft(username, "   ")) // 去掉作弊的空格

	// index 索引
	var s2 = "rain yuan alvin"
	fmt.Println(strings.Index(s2, "yuan"))
	fmt.Println(strings.Index(s2, "alex")) // 返回为-1,原因为未从s2内找到对应字符串

	// 分割 拼接
	var s3 = "rain yuan alvin"
	nameSlice := strings.Split(s3, " ")
	fmt.Println(nameSlice)
	fmt.Println(nameSlice[0])
	fmt.Println(nameSlice[1])
	fmt.Println(nameSlice[2])

	var newStr = strings.Join(nameSlice, ",")
	fmt.Println(newStr)

}

相关文章:

  • 使用logicflow流程图实例
  • ClickHouse快速上手
  • Hyperf 使用配置中心 - nacos配置中心
  • 力扣hot100题解(python版10-12题)
  • Windows如何新建一个需要管理员权限才能删除的文件夹
  • Vue | (四)使用Vue脚手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程
  • IDEA自定义类注释及方法注释模板
  • 智慧城市的新宠儿:会“思考”的井盖
  • 分布式锁的应用场景及实现
  • [晓理紫]每日论文分享(有中文摘要,源码或项目地址)--强化学习、模仿学习、机器人
  • Jmeter 学习目录(0)
  • 《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)
  • Postgresql源码(121)事务状态中childXids的作用
  • 【ArcGIS微课1000例】0105:三维模型转体模型(导入sketchup转多面体为例)
  • 【Spring Boot 3】【JPA】一对一双向关联
  • 【Git工具实战】实用真实 Git 开发工作流程
  • Sora背后的论文(1):使用 lstms 对视频展现进行无监督学习
  • 《springcloud alibaba》 一 Openfeign
  • 2024年刷题记录
  • 【51单片机】直流电机驱动(PWM)(江科大)
  • “上海-日喀则”直飞航线正式通航,将于5月1日开启首航
  • 国家税务总局:“二套转首套”可以享受贷款利息个税专项扣除
  • 中国贸促会:有近50%的外贸企业表示将减少对美业务
  • “中国游”带火“中国购”,“即买即退”让外国游客购物更丝滑
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • 中国人民对外友好协会代表团访问美国