惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
V
V2EX
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
Vercel News
Vercel News
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
小众软件
小众软件
L
Lohrmann on Cybersecurity
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog
AWS News Blog
AWS News Blog
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
Kaspersky official blog
B
Blog RSS Feed
G
Google Developers Blog
量子位
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Scott Helme
Scott Helme
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
雷峰网
雷峰网
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
The Hacker News
The Hacker News
U
Unit 42
S
SegmentFault 最新的问题
I
InfoQ
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
罗磊的独立博客
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes

博客园 - 悉野

ssh连结vmware中ubuntu的共享文件夹 spring加载冲突问题 spring一个错误修正 抓安卓日记到文件 注册表删除桌面顽固图标 github买的账号无法拉取代码的解决方法 apk常用命令 java服务器异常处理 ES6 学习难度分层 promise原理 材质, 纹理, shader之间的关系 TCP与UDP区别 javascript中=>与function的区别 javascript中函数解析过程 cocos使用fgui 几种服务注册与发现的区别 mybatis测试 向量点乘与叉乘 unity画布3种渲染模式 go学习笔记10(HTTP) go学习笔记9(TCP) go学习笔记8(反射) c++简单的线程池 operator new 是 C++ 动态内存分配的核心函数,负责分配原始内存,不调用构造函数 C++的定位放置new(Placement new) go学习笔记7(泛型,文件读写,测试) go学习笔记6(协程与channel,select使用,线程安全,异常处理) go学习笔记5(函数,结构体,自定义类型和类别名,接口) go学习笔记4(数组与切片,map,if,switch,for循环) go学习笔记2 laya打包的apk版本更新脚本 laya列表滚动问题 laya踩坑记 laya列表时计算具体体子项是列表中第几个 子弹射击 laya给自己画边框 查看laya已经加载的资源 laya spine事件
go学习笔记3(变量定义,输入输出,基本数据类型)
悉野 · 2026-04-05 · via 博客园 - 悉野

参考:https://www.bilibili.com/video/BV14Cetz4E43

1.变量定义.go

package main

import (
    "fmt"
    "go_study/version"
)

var (
    s1 string = "hello world1"
    s2 string = "hello world2"
)

// TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
// the <icon src="AllIcons.Actions.Execute"/> icon in the gutter and select the <b>Run</b> menu item from here.</p>
func main() {
    //TIP <p>Press <shortcut actionId="ShowIntentionActions"/> when your caret is at the underlined text
    // to see how GoLand suggests fixing the warning.</p><p>Alternatively, if available, click the lightbulb to view possible fixes.</p>
    s := "gopher"
    s = "tt"
    fmt.Printf("Hello and welcome, %s!\n", s)

    for i := 1; i <= 5; i++ {
        //TIP <p>To start your debugging session, right-click your code in the editor and select the Debug option.</p> <p>We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
        // for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.</p>
        fmt.Println("i =", 100/i)
    }
    var rtes string = "ddd"
    var a1, a2 = 3, 4
    fmt.Println("版本号:", version.Version)
    fmt.Printf("%p, %p", &a1, &a2, rtes)
    hello()
}

func hello() {
    fmt.Println("Hello World")
}

2.输入输出.go

package main

import "fmt"

func main() {

    fmt.Println("Hello World", "你好")
    fmt.Printf("%c\n", 'a')
    fmt.Printf("%s\n", "你好")     // 字符串
    fmt.Printf("%d\n", 3)        // 整数
    fmt.Printf("%.2f\n", 3.1459) //保留两位小数 3.15
    var t int32 = ''
    fmt.Printf("%c\n", t)

    //rune 是 Go 语言中的 字符类型,本质上是 int32,用于表示一个 Unicode 码点(code point)。
    var t2 rune = ''
    fmt.Printf("%c\n", t2)

    fmt.Printf("%c -> %U\n", 'A', 'A') // A -> U+0041
    fmt.Printf("%c -> %U\n", '', '') // 你 -> U+4F60

    //for...range 会自动把 string 拆成 rune 单位,而不是 byte!

    str := "你好Go"
    runes := []rune(str)       //可以算出算符数
    fmt.Println(len(str))      // 字节数(UTF-8):8
    fmt.Println(len(runes))    // 字符数(rune):4
    fmt.Println(string(runes)) // 还能转回字符串
    //UTF-8 下:1个中文字符占 3个字节,但在 Go 中用 1 个 rune 表示(int32)。.

    var tmp = 133
    fmt.Printf("%p\n", &tmp) //输出0xf4552890070

    fmt.Printf("%T, %T, %T\n", 3.14159, "字符", &tmp) //类型 float64, string, *int

    fmt.Printf("%v,%v,%v,%v, %v\n", "你好", "", 123, tmp, &tmp)      //输出原始数据 你好,,123,133, 0x11cb60b220e0
    fmt.Printf("%#v,%#v,%#v,%#v, %#v\n", "你好", "", 123, tmp, &tmp) //输出 "你好","",123,133, (*int)(0x15767fb160e0)
    fmt.Printf("请输入你名字:\n")
    var name string
    _, err := fmt.Scan(&name) //返回的第一个值不使用, 用_代替
    if err != nil {
        return
    }
    fmt.Println("请输入年龄:")
    var age int
    _, err = fmt.Scan(&age)
    if err != nil {
        return
    }

    fmt.Printf("名字:%s, 年龄:%d\n", name, age)
}

3.基本数据类型.go

package main

import (
    "fmt"
    "reflect"
    "strings"
    "unsafe"
)

/*
*
1.整数型
2.浮点型
3.复数
4.布尔
5.字符串
*/
func main() {
    var n1 int = 100 //int在64位系统中为64
    size := unsafe.Sizeof(n1)
    fmt.Printf("n1 的类型 %T, 大小为:%d\n", n1, size)            //n1 的类型 int, 大小为:8
    fmt.Printf("rune类型的大小为: %d\n", unsafe.Sizeof(rune(0))) //rune固定为32位 rune类型的大小为: 4
    fmt.Printf("byte类型的大小为: %d\n", unsafe.Sizeof(byte(0))) //byte类型的大小为: 1
    var f interface{} = 3.14
    fmt.Printf("f的类型是%T\n", f)
    fmt.Println("f的类型是", reflect.TypeOf(f))
    fmt.Println("f的类型名是:", reflect.TypeOf(f).Name())
    var f2 interface{} = []int{3, 4, 5}
    fmt.Print("f2的类型是:", reflect.TypeOf(f2))
    var f3 interface{} = map[string]int{"a": 1, "b": 2}
    fmt.Println("f3的类型是", reflect.TypeOf(f3))
    fmt.Println("hello '' haha''")
    fmt.Println(`
        可换行的
        数据
    `)
    var zero int
    var float float32
    fmt.Println(zero, float)

    var sb strings.Builder
    for i := 0; i < 10; i++ {
        sb.WriteString("hello world\n")
    }
    fmt.Println(sb.String())
}