首先看官方文档介绍

func TrimLeft(s string, cutset string) string{}

TrimLeft返回字符串s的一部分,其中删除了cutset中包含的所有前导Unicode代码点。

func TrimPrefix(s, prefix string) string{}

TrimPrefix返回不包含前缀字符串的s。如果s不以前缀开头,则s不变返回。

理解

TrimPrefix很好理解,就是把前缀字符串去掉,剩下的就是需要返回的
那么TrimLeft怎么理解呢,我来举个例子:

    words := "mongodb://off"
    prefix := "mongodb://"
    fmt.Println(strings.TrimLeft(words, prefix))
    words = "mongodb://xgoff"
    prefix = "mongodb://"
    fmt.Println(strings.TrimLeft(words, prefix))
   输出:
      ff
      xgoff

第一个为什么是ff ?

  • 第一次清掉前缀剩下off
  • 第二次发现o开头的字符串o在包含在prefix里面,去掉
  • 剩下ff,发现不在prefix字符串里面,清除完毕

第二个为什么输出是 xgoff ?

  • 第一次清掉前缀剩下xgoff
  • 剩下以x开头的字符串均不在prefix,清除完毕