前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】源码片段 01-01

【K8s】源码片段 01-01

原创
作者头像
Librant
修改2022-06-11 18:14:04
1600
修改2022-06-11 18:14:04
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

k8s 源码片段分析:

将 K8s 的源码切换到第一个 commit(2c4b3a562ce) :

pkg/util/stringlist.go

代码语言:go
复制
package util

type StringList []string

func (sl *StringList) Set(value string) error {
	for _, s := range strings.Split(value, ",") {
		if len(s) == 0 {
			return fmt.Errorf("value should not be an empty string")
		}
		*sl = append(*sl, s)
	}
	return nil
}

代码功能分析:

Set() 方法是将 value 的值,通过分号进行分隔,如果分隔有空的值,则会返回错误;

请先思考一个问题:

1)如果输入的 value 值为 "" 时,此时方法是返回 nil 还是 error ?

2)如果 value 为 "value1," 时,此时方法返回的是 nil 还是 error ?

在不编写代码测试,可以先分析下,再验证自己的答案;


代码验证如下:

代码语言:go
复制
func main() {
    s := make(StringList, 0)

    // 传入空值
    if err := s.Set(""); err != nil {
        fmt.Println(err)                      
    }

    // 传入 value1,
    if err := s.Set("value,"); err != nil {
        fmt.Println(err)
    }

    // 打印 s 的值
    fmt.Printf("%+v\n", s)
}

执行结果:

代码语言:txt
复制
[root@VM-145-179-centos k8s01-01]# ./k8s01-01 
value should not be an empty string
value should not be an empty string
[value]

这里主要是 strings.Split() 函数的分析:

看 Split() 函数的注释,如果传入的是空字符串,返回切片的长度为 1

这里的函数就会进入到 for 循环,所以传入空串,是返回 error 的错误;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • k8s 源码片段分析:
    • 代码功能分析:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档