This product is not supported for your selected Datadog site. ().
Cette page n'est pas encore disponible en français, sa traduction est en cours. Si vous avez des questions ou des retours sur notre projet de traduction actuel, n'hésitez pas à nous contacter.
Metadata
ID:go-best-practices/omit-default-slice-index
Language: Go
Severity: Warning
Category: Best Practices
Description
In Go, the expression s[n:len(s)] is used to slice a string or slice s starting from index n up to the end of s. However, it is considered suboptimal and can be replaced with the simpler and more expressive s[n:] notation.
Using s[n:len(s)] is not optimal for a few reasons:
Readability: The s[n:] notation provides a clearer and more concise representation of slicing from index n to the end of s. It eliminates the need to explicitly specify len(s), making the code more readable.
Simplicity: By using s[n:], you remove unnecessary redundancy in the code. It improves the simplicity of your code and reduces the chances of introducing errors when manually specifying the length of s.
Performance: Although the performance difference may be negligible, using s[n:] is more efficient than creating a len(s) expression. The s[n:] notation directly references the underlying slice without requiring an additional length calculation.
For example, let’s consider the following code snippets:
s:="Hello, World!"fmt.Println(s[7:len(s)])
Output: “World!”
s:="Hello, World!"fmt.Println(s[7:])
Output: “World!”
Both snippets will produce the same output, but the second one using s[7:] is preferred for its simplicity and readability.
By replacing s[n:len(s)] with s[n:], you can improve the clarity and maintainability of your code while still achieving the desired slicing functionality.
Non-Compliant Code Examples
funcmain(){d:=s[n:len(s)]}
Compliant Code Examples
funcmain(){d:=s[n:]}
Seamless integrations. Try Datadog Code Security
Datadog Code Security
Try this rule and analyze your code with Datadog Code Security
How to use this rule
1
2
rulesets:- go-best-practices # Rules to enforce Go best practices.
Create a static-analysis.datadog.yml with the content above at the root of your repository
Use our free IDE Plugins or add Code Security scans to your CI pipelines