golang中string int float bool类型相互转换

本文介绍了如何在Golang中进行string到int、int64、uint64、float和bool之间的转换,包括使用strconv包提供的各种方法,如strToInt、strToFloat,以及格式化输出。同时涵盖了时间戳转换和常见类型间的转换示例。

golang中string int float bool类型相互转换

package main

import (
	"fmt"
	"strconv"
)

func IntToString() {
	//todo :int to string
	v := 456
	vS := strconv.Itoa(v)
	fmt.Println(vS) //方法1,简便版

	//todo :int64 to string
	var vI64 int64 = 789
	vInt64S := strconv.FormatInt(vI64, 10) //方法2,int64转string,可指定几进制
	fmt.Println(vInt64S)

	//todo :uint64 to string
	var vUI64 uint64 = 91011
	vUI64S := strconv.FormatUint(vUI64, 10) //方法3, uint64转string,可指定几进制
	fmt.Println(vUI64S)
}

func StringToInt() {
	//todo :string to int/int64
	s := "123"
	vInt, _ := strconv.Atoi(s) //方法1,便捷版
	fmt.Println(vInt)

	vInt64, _ := strconv.ParseInt(s, 10, 64) //方案2,有符号整型,可以指定几进制,整数长度
	fmt.Println(vInt64)

	vUInt64, _ := strconv.ParseUint(s, 10, 64) //方案3,无符号整型,可以指定几进制,整数长度
	fmt.Println(vUInt64)
}

func StringToFloat() {
	//todo :string to float
	f64, _ := strconv.ParseFloat("123.456", 64) //方法1,可以指定长度
	fmt.Println(f64)
}

func FloatToString() {
	//todo :float to string
	f64 := 1223.13252
	sF64 := strconv.FormatFloat(f64, 'f', 5, 64) //方法1,可以指定输出格式、精度、长度
	fmt.Println(sF64)
}

func StringToBool() {
	//todo :string to bool
	//// 接受 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False 等字符串;
	//// 其他形式的字符串会返回错误
	b, _ := strconv.ParseBool("1")
	fmt.Println(b)
}
func BoolToString() {
	//todo :bool to string
	sBool := strconv.FormatBool(true) //方法1
	fmt.Println(sBool)
}

func TimeTrans() {
	//todo :时间转时间戳
	fmt.Println(time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix())
	//todo :时间戳转时间
	fmt.Println(time.Unix(1389058332, 0).Format("2006-01-02 15:04:05")) //2014-01-07 09:32:12
}

func main() {
	StringToInt()
	IntToString()
	StringToFloat()
	FloatToString()
	BoolToString()
	StringToBool()
    TimeTrans()
}

Golang 中,`map` 是一种非常常用的数据结构,用于存储键值对。关于 `map` 的键(key)类型Golang 有明确的限制和规范。 ### Key 类型要求 Golang 中的 `map` 允许的 key 类型必须是可以进行比较的类型,因为 `map` 需要能够判断两个 key 是否相等。具体来说,以下类型的值可以作为 `map` 的 key: 1. **基本类型**:如 `int`、`string`、`bool`、`float32`、`float64` 等。 2. **指针类型**:指向任何类型的指针都可以作为 key。 3. **接口类型**:只要接口的动态类型是可比较的,就可以作为 key。 4. **数组类型**:数组的元素类型必须是可比较的,且数组长度固定。 5. **结构体类型**:结构体的所有字段都必须是可比较的类型。 6. **复合类型**:如 `slice` 和 `map` 本身不能作为 key,因为它们不可比较。 ### 不允许的 Key 类型 以下类型不能作为 `map` 的 key,因为它们无法进行比较: - `slice` - `map` - `func` ### 示例代码 ```go package main import "fmt" func main() { // 合法的 key 类型示例 m1 := map[string]int{"a": 1, "b": 2} fmt.Println("m1:", m1) m2 := map[int]bool{1: true, 2: false} fmt.Println("m2:", m2) m3 := map[[2]int]string{{1, 2}: "array key"} fmt.Println("m3:", m3) // 不合法的 key 类型示例(会导致编译错误) // m4 := map[[]int]string{{1, 2}: "slice key"} // 编译错误 // m5 := map[map[int]int]string{{1: 2}: "nested map key"} // 编译错误 } ``` ### 总结 Golang 对 `map` 的 key 类型进行了严格的限制,确保 key 是可比较的,从而保证 `map` 操作的正确性和高效性。开发者在使用 `map` 时需要注意这些规则,以避免编译错误或运行时异常。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员麻辣烫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值