You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中如何将驼峰字符串转换为snake_case(蛇形命名)格式

Go 驼峰转蛇形命名便捷实现方案

方案1:引入成熟第三方库(推荐,无需自己处理边界逻辑)

Go 生态有成熟的字符串大小写转换库,直接调用即可,不需要手动编写转换逻辑:

  1. 执行命令安装依赖:
go get github.com/iancoleman/strcase
  1. 调用示例:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:09:01