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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
C
Cisco Blogs
The Hacker News
The Hacker News
T
Tor Project blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
Vercel News
Vercel News
C
CERT Recently Published Vulnerability Notes
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
M
MIT News - Artificial intelligence
I
Intezer
aimingoo的专栏
aimingoo的专栏
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 热门话题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
P
Proofpoint News Feed
B
Blog
T
Threat Research - Cisco Blogs
博客园 - 叶小钗
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Schneier on Security
Schneier on Security
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
H
Help Net Security
博客园 - 聂微东
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
GRAHAM CLULEY

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周 学习周刊-总第239期-2025年第48周 整理我在静态服务透明代理上的极致求索之路,最后一个你绝想不到 学习周刊-总第238期-2025年第47周 我们输了,但收获颇多 太多了,太多了 学习周刊-总第237期-2025年第46周 学习周刊-总第236期-2025年第45周 学习周刊-总第235期-2025年第44周 二五年国庆二三事 学习周刊-总第234期-2025年第43周 学习周刊-总第233期-2025年第42周 学习周刊-总第232期-2025年第41周 学习周刊-总第231期-2025年第40周 学习周刊-总第230期-2025年第39周 西湖毅行 2025年开源世界逸闻三则 学习周刊-总第229期-2025年第38周 手抄《与妻书》 CNB开发与构建基于docker-cache缓存复用的配置实践心得 学习周刊-总第228期-2025年第37周 父亲善行录 学习周刊-总第227期-2025年第36周 带你认识我之看看我的高中同学录(其二) 学习周刊-总第226期-2025年第35周 带你认识我之看看我的高中同学录(其一) 认识神级MCP工具系列--用anyquery和数据库交互 学习周刊-总第225期-2025年第34周 学习周刊-总第224期-2025年第33周 学习周刊-总第223期-2025年第32周 学习周刊-总第222期-2025年第31周 学习周刊-总第221期-2025年第30周 CNB云原生开发环境届的瑞士军刀,详解qifei项目 vuepress-vdoing主题配置自建不蒜子统计 学习周刊-总第220期-2025年第29周 写在博客发表文章1000篇的节点 从claude cli的体验聊聊最大的敌人是我们自己的成见 学习周刊-总第219期-2025年第28周 学习周刊-总第218期-2025年第27周 学习周刊-总第217期-2025年第26周 理论正确,事实错误 学习周刊-总第216期-2025年第25周 学习周刊-总第215期-2025年第24周 学习周刊-总第214期-2025年第23周 学习周刊-总第213期-2025年第22周 学习周刊-总第212期-2025年第21周 从赵心童世锦赛夺冠聊聊我的斯诺克情缘 学习周刊-总第211期-2025年第20周 记录二五年五一之短暂回归家庭 学习周刊-总第210期-2025年第19周 学习周刊-总第209期-2025年第18周 学习周刊-总第208期-2025年第17周 Go开发实践之Gin框架将前端的dist目录embed到二进制 学习周刊-总第207期-2025年第16周 近期关于cobra库的一些实践心得总结 学习周刊-总第206期-2025年第15周 我的嗜好--嗑瓜子 记大宝参加幼儿园组织的清明烈士陵园扫墓活动 学习周刊-总第205期-2025年第14周 学习周刊-总第204期-2025年第13周 前端开发小笔记--在数组中给字段添加值与删除字段的操作 学习周刊-总第203期-2025年第12周 人生实苦,何以自渡 学习周刊-总第202期-2025年第11周 近期发现的一些优秀的工具提名(一) 学习周刊-总第201期-2025年第10周 学习周刊-总第200期-2025年第09周 记一次女友喝醉使我忍术破功 爱情风波--一次分手又复合的经历 学习周刊-总第199期-2025年第08周 整理我的信息源
golang数据类型转换汇总
二丫讲梵 · 2022-07-17 · via 二丫讲梵

golang 作为强类型语言,我们在日常开发过程中,遇到类型转换的场景也非常多,本文整理我在工作开发中遇到过的类型转换实践。

# String To Other

  • string to int

    • 方法一

      	str := "10"
      	int, err := strconv.Atoi(str)
      

      1
      2

    • 方法二

      	str := "10"
      	int, err := strconv.ParseInt(str, 10, 0)
      

      1
      2

  • string to int8

    	str := "10"
    	int, err := strconv.ParseInt(str, 10, 8)
    

    1
    2

  • string to int32

    int32 也叫做 rune

    	str := "10"
    	int, err := strconv.ParseInt(str, 10, 32)
    

    1
    2

  • string to int64

    	str := "10"
    	int, err := strconv.ParseInt(str, 10, 64)
    

    1
    2

  • string to float32

    	ret, _ := strconv.ParseFloat("3.14159", 32)
    	fmt.Println(ret)
    

    1
    2

  • string to float64

    	ret, _ := strconv.ParseFloat("3.14159", 64)
    	fmt.Println(ret)
    

    1
    2

  • string to []byte

    	s1 := "hello"
      b := []byte(s1)
    

    1
    2

  • json string to map

    func JsonToMap(jsonStr string) (m map[string]string, err error) {
    	err = json.Unmarshal([]byte(jsonStr), &m)
    	if err != nil {
    		return nil, err
    	}
    	return
    }
    

    1
    2
    3
    4
    5
    6
    7

# Other To String

  • []byte to string

    	var s1 []byte
    	fmt.Println(string(s1))
    

    1
    2

  • int64 to string

    int, int32, int16, int8 转十进制字符串

    	var number int = 12 // 您可以在这里使用任何整数: int32, int16, int8
    	s := strconv.FormatInt(int64(123), 10)
    	fmt.Println(s)
    

    1
    2
    3

    要转换intstring也可以使用strconv.Itoa (opens new window)which 等价于strconv.FormatInt(int64(i), 10) (opens new window).

    	number := 12
    	str := strconv.Itoa(number)
    	fmt.Println(str)
    

    1
    2
    3

# Map To Other

  • map to json string

    func MapToJson(m map[string]string) (string, error) {
    	result, err := json.Marshal(m)
    	if err != nil {
    		return "", nil
    	}
    	return string(result), nil
    }
    

    1
    2
    3
    4
    5
    6
    7

    通常也会使用一些第三方的 json 库进行解析,这里推荐:github.com/json-iterator/go (opens new window)

    package main
    
    import (
    	"fmt"
    
    	jsoniter "github.com/json-iterator/go"
    )
    
    var json = jsoniter.ConfigCompatibleWithStandardLibrary
    
    func main() {
    	tmpData := map[string]interface{}{"name": "eryajf", "age": 18}
    
    	output, err := json.Marshal(&tmpData)
    	if err != nil {
    		fmt.Println(err)
    	}
    	fmt.Println(string(output))
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

  • map to slice

    func MapToSlice(m map[int]string) []string {
      s := make([]string, 0, len(m))
      for _, v := range m {
        s = append(s, v)
      }
      return s
    }
    

    1
    2
    3
    4
    5
    6
    7

# Json To Other

  • json to map

    func JsonToMap() {
    	jsonStr := `{"name": "eryajf","age": 18}`
    	var mapResult map[string]interface{}
    	err := json.Unmarshal([]byte(jsonStr), &mapResult)
    	if err != nil {
    		fmt.Println("JsonToMap err: ", err)
    	}
    	fmt.Println(mapResult)
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9

  • json to struct

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type People struct {
    	Name string `json:"name"`
    	Age int `json:"age"`
    }
    
    func main() {
    	jsonStr := `{"name": "eryajf","age": 18}`
    	var people People
    	json.Unmarshal([]byte(jsonStr), &people)
    	fmt.Println(people.Name, people.Age)
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    使用第三方 JSON 库进行解析:

    package main
    
    import (
    	"fmt"
    
    	jsoniter "github.com/json-iterator/go"
    )
    
    type People struct {
    	Name string `json:"name"`
    	Age int `json:"age"`
    }
    
    func main() {
    	jsonStr := `{"name": "eryajf","age": 18}`
    	var people People
    	json.Unmarshal([]byte(jsonStr), &people)
    	fmt.Println(people.Name, people.Age)
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

# Struct To Other

  • struct to json

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type People struct {
    	Name string `json:"name"`
    	Age int `json:"age"`
    }
    
    func main() {
    	p := People{
    		Name: "eryajf",
    		Age:  18,
    	}
    	jsonBytes, err := json.Marshal(p)
    	if err != nil {
    		fmt.Println(err)
    	}
    	fmt.Println(string(jsonBytes))
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    同理,这里仍旧可以借助第三方 JSON 库进行解析:

    package main
    
    import (
    	"fmt"
    
    	jsoniter "github.com/json-iterator/go"
    )
    
    var json = jsoniter.ConfigCompatibleWithStandardLibrary
    
    type People struct {
    	Name string `json:"name"`
    	Age  int    `json:"age"`
    }
    
    func main() {
    	p := People{
    		Name: "eryajf",
    		Age:  18,
    	}
    	jsonBytes, err := json.Marshal(p)
    	if err != nil {
    		fmt.Println(err)
    	}
    	fmt.Println(string(jsonBytes))
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

未完。。。