Go语言中如何将驼峰字符串转换为snake_case(蛇形命名)格式
Go 驼峰转蛇形命名便捷实现方案
方案1:引入成熟第三方库(推荐,无需自己处理边界逻辑)
Go 生态有成熟的字符串大小写转换库,直接调用即可,不需要手动编写转换逻辑:
- 执行命令安装依赖:
go get github.com/iancoleman/strcase
- 调用示例:
package main import ( "fmt" "github.com/iancoleman/strcase" ) func main() { myStrings := []string{ "MyString1", "SomeName33", "AaaBbbTutu", "JaaaKooooTooo", } // 转换得到蛇形命名切片 mySnakeCaseStrings := make([]string, len(myStrings)) for idx, rawStr := range myStrings { mySnakeCaseStrings[idx] = strcase.ToSnake(rawStr) } // 输出结果和预期完全一致 fmt.Println(mySnakeCaseStrings) // 输出:[my_string1 some_name33 aaa_bbb_tutu jaaa_koooo_tooo] }
该库还支持大驼峰、全大写下划线命名等其他格式转换,可直接复用。
方案2:无外部依赖轻量化实现
如果不想引入第三方依赖,可使用以下极简实现,适配你给出的场景完全够用:
package main import ( "fmt" "unicode" ) func toSnakeCase(s string) string { var res []rune for i, r := range s { if unicode.IsUpper(r) { if i > 0 { res = append(res, '_') } res = append(res, unicode.ToLower(r)) } else { res = append(res, r) } } return string(res) } func main() { myStrings := []string{ "MyString1", "SomeName33", "AaaBbbTutu", "JaaaKooooTooo", } mySnakeCaseStrings := make([]string, len(myStrings)) for idx, rawStr := range myStrings { mySnakeCaseStrings[idx] = toSnakeCase(rawStr) } fmt.Println(mySnakeCaseStrings) }
内容的提问来源于stack exchange,提问作者Jio
相关产品推荐
相关产品推荐

